Iterieren durch mehrere Textfelder
Innerhalb einer Windows Forms-Anwendung standen Sie vor der Herausforderung, 37 Textfelder mit jeweils aufeinanderfolgenden Namen zu durchlaufen mit dem Namen „DateTextBox“, gefolgt von einem numerischen Suffix. Ihre Aufgabe besteht darin, diesen Textfeldern einen Wert basierend auf dem Schleifenzähler „i“ zuzuweisen.
Rekursiver Kontrollabruf
Um dieses Problem effektiv zu lösen, nutzen Sie eine Erweiterungsmethode, die dies kann Rufen Sie alle Steuerelemente und Untersteuerelemente eines bestimmten Typs rekursiv ab. Hier ist der Code dafür:
public static IEnumerable<TControl> GetChildControls<TControl>(this Control control) where TControl : Control { var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>(); return children.SelectMany(c => GetChildControls<TControl>(c)).Concat(children); }
Implementierung
Um diese Methode zu nutzen, können Sie alle in Ihrem Formular vorhandenen Textfelder abrufen:
var allTextBoxes = this.GetChildControls<TextBox>();
Sobald Sie die Liste der Textfelder erhalten haben, können Sie jedes einzelne durchlaufen und den entsprechenden Wert basierend auf dem „i“ zuweisen. counter:
foreach (TextBox tb in allTextBoxes) { tb.Text = ...; }
Durch die Implementierung dieses Ansatzes können Sie die zahlreichen Textfelder effizient durchlaufen und Werte dynamisch zuweisen, selbst wenn diese in verschachtelten Panels platziert sind.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere nacheinander benannte Textfelder in einer Windows Forms-Anwendung effizient durchlaufen und ihnen Werte zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!