Hallo,
ich möchte in einer WPF Anwendung mehrere Textboxen innerhalb einer Groupbox leeren.
Sicherlich kann man jetzt jede Textbox einzeln wie folgt leeren:
C#-Quelltext
1: 2: 3:
| txt_1.Clear(); txt_2.Clear(); ... |
Hierbei ergibt sich aber das Problem, dass dies bei besonders vielen Textboxen den Quelltext aufbläht. Schöner wäre da eine ausgereiftere Lösung.
Auf der Suche im Netz habe ich mehrere Lösungen gefunden, die alle grundlegend erstmal gleich aussehen. Die ergoogelte Lösung sieht wie folgt aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| private void btn_Clear_Click(object sender, RoutedEventArgs e) { ClearTextBoxes(this.Controls); }
private void ClearTextBoxes(Control.ControlCollection cc) { foreach (Control ctrl in cc) { TextBox tb = ctrl as TextBox;
if (tb != null) tb.Text = ""; else ClearTextBoxes(ctrl.Controls); } } |
Mein Problem ist, dass ich die Lösung an den entscheidenten Punkten nicht verstehe und sie darum auch nicht zum Laufen bekomme.
Mir ist klar, dass ich beim Klick auf den Button
btn_Clear die Methode zum Löschen der Textboxen names
ClearTextBoxesaufrufe. Doch was ist
Control.ControlCollection cc für ein Übergabeparameter?
In der Methode starte ich nun eine foreach-Schleife, welche mir die Textboxen "" setzt, sofern diese nicht leer sind. Doch was hat es mit der Schleifenbedingung (Control ctrl in cc) auf sich? Und was bedeuted das hier genau:
C#-Quelltext
1:
| TextBox tb = ctrl as TextBox; |
Beim Compilieren bekomme ich die Fehlermeldung
"Der Typname 'ControlCollection' ist im Typ 'System.Windows.Controls.Control" nicht vorhanden"
Das sollte doch aber bei Einbinden von
System.Windows.Controls; mittels
using der Fall sein, oder?
Kann mir jemand bitte helfen den Quelltext zum Laufen zu bekommen?
Moderiert von
Th69: Topic aus C# - Die Sprache verschoben am Mo 29.12.2014 um 20:10