Maison >développement back-end >C++ >Comment puis-je parcourir et attribuer efficacement des valeurs à plusieurs zones de texte nommées de manière séquentielle dans une application Windows Forms ?
Itérer dans plusieurs zones de texte
Dans une application Windows Forms, vous avez rencontré le défi de parcourir 37 zones de texte avec des noms séquentiels, chacune nommé "DateTextBox" suivi d'un suffixe numérique. Votre tâche consiste à attribuer une valeur basée sur le compteur de boucles « i » à ces zones de texte.
Récupération de contrôle récursif
Pour résoudre efficacement ce problème, exploitez une méthode d'extension qui peut récupérer de manière récursive tous les contrôles et sous-contrôles d’un type spécifique. Voici le code correspondant :
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); }
Implémentation
Pour utiliser cette méthode, vous pouvez récupérer toutes les zones de texte présentes dans votre formulaire :
var allTextBoxes = this.GetChildControls<TextBox>();
Une fois la liste des zones de texte obtenue, vous pouvez parcourir chacune d'entre elles et attribuer la valeur appropriée en fonction du « i » counter :
foreach (TextBox tb in allTextBoxes) { tb.Text = ...; }
En mettant en œuvre cette approche, vous pouvez parcourir efficacement les nombreuses zones de texte et attribuer des valeurs de manière dynamique, même si elles sont placées dans des panneaux imbriqués.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!