C#-Quelltext
1: 2: 3: 4: 5:
| if (cmbGruppe.SelectedIndex == -1) { MsgAusgabe.ShowError("Bitte wählen Sie eine Berechtigungsgruppe aus!"); return; } |
Kann es sein, dass die Methode hier raus springt?
Aus dem Grund setze ich returns nach Möglichkeit nur am Ende, damit ich kein return irgendwo übersehe und sicher bin, dass die Methode garantiert und in jedem Fall bis zum Ende durch läuft.
Das kannst du aber auch testen, indem du einfach mal einen Breakpoint an den Anfang der foreach-Schleife setzt und dann mit F10 Schritt für Schritt die einzelnen Durchläufe mit verfolgst und dir anschaust, was dein Programm im Detail tut.
Dazu kommt natürlich noch das, was Th69 gesagt hat.
Neben dem DataBinding-Ansatz (um es schneller und ohne große Änderungen zu lösen), kannst du doch einfach mal meinen Tipp von meinem letzten Post ausprobieren, nämlich indem du die betroffenen Controls in eine Liste legst. Dann musst du nicht auf den Typ prüfen und musst nicht rekusiv alle Controls ab suchen. Die betroffenen Controls kennst du ja und kannst sie im Konstruktor in die Liste legen.
Dennoch wäre DataBinding der saubere Weg.
Zum Verständnis, wie und wo man das verwendet:
Es gibt ein Pattern namens MVVM (Model-View-ViewModel). Das wurde (wenn ich mich nicht irre) besonders im Hinblick auf WPF entworfen, kann aber auch bei WindowsForms angewendet werden.
Einfach zusammen gefasst:
Model:
Das reine Daten-Objekt. Es enthält die Daten aus der Datenbank. Dort werden die abgerufenen Daten rein gelegt und von dort werden neue Daten in die Datenbank gespeichert.
Hier liegt bis auf die reine Validierungs-Logik keine Programm-Logik.
View:
Das ist eine Oberfläche, sie macht nichts außer anzeigen und Daten via DataBinding mit dem ViewModel auszutauschen.
ViewModel:
Wie der Name schon sagt, ist es eine Art Mischung aus View und Model.
Konkret betrachtet ist ein ViewModel das Objekt, das die Logik für die View bereit hält.
Es bekommt seine Daten von dem Model und bereitet sie so auf, dass die View vollständig ohne weitere Logik Diese korrekt anzeigen kann.
Das DataBinding ist dabei die Schnittstelle zwischen View und ViewModel. Die View braucht Daten und sucht sie über diese Schnittstelle bei dem ViewModel und das ViewModel bekommt neu eingegebene Daten über diese Schnittstelle von der View.
Ob das Konzept so sauber mit Windows Forms umsetzbar ist, weiß ich nicht, bei WPF ist es aber möglich, eine View komplett ohne C# zu bauen und ohne irgendeinen Teil des Programms zu kennen. Die einzige Ausnahme hier bildet das ViewModel.
Der Vorteil ist, dass die View unabhängig vom Programm von z.B. einem Designer, der nur geringe C#-Kenntnisse braucht, entwickelt werden kann.
Außerdem kannst du Validierung von eingegebenen Daten im ViewModel machen, da hast du nicht das ganze Chaos drum herum, was die View dar stellt und das ist bei Forms ja sowieso recht umfangreich.
Ich schau grad nach einem Beispiel, da ich selber mich nie wirklich mit Windows Forms anfreunden konnte und DataBinding noch nie dort genutzt habe
Ansonsten google du doch mal, auf msdn gibts sowas wie ein riesiges Tutorial.
PS: Schau
hier mal. Scheint ganz gut zu sein.