Maison >développement back-end >C++ >Comment puis-je parcourir efficacement les zones de texte sur plusieurs panneaux dans une application WinForms ?
Parcourir des zones de texte dans une application Winforms
Dans une application Winforms, vous pouvez rencontrer des situations dans lesquelles vous devez parcourir une collection de zones de texte sur l'écran. Chacune de ces zones de texte peut être numérotée de manière séquentielle, par exemple :
DateTextBox0 DateTextBox1 ... DateTextBox37
Pour attribuer des valeurs à ces zones de texte, vous pouvez envisager l'approche suivante :
int month = MonthYearPicker.Value.Month; int year = MonthYearPicker.Value.Year; int numberOfDays = DateTime.DaysInMonth(year, month); m_MonthStartDate = new DateTime(year, month, 1); m_MonthEndDate = new DateTime(year, month, numberOfDays); DayOfWeek monthStartDayOfWeek = m_MonthStartDate.DayOfWeek; int daysOffset = Math.Abs(DayOfWeek.Sunday - monthStartDayOfWeek); for (int i = 0; i <= (numberOfDays - 1); i++) { // Here is where you want to loop through the textboxes and assign values based on the 'i' value // DateTextBox(daysOffset + i) = m_MonthStartDate.AddDays(i).Day.ToString(); }
Cependant, votre application introduit un couche supplémentaire de complexité car ces zones de texte sont situées sur des panneaux séparés. Pour parcourir efficacement ces contrôles, vous pouvez utiliser une méthode d'extension :
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); }
Avec cette méthode d'extension, vous pouvez récupérer de manière récursive tous les contrôles et sous-contrôles d'un type spécifié. Exemple d'utilisation :
var allTextBoxes = this.GetChildControls<TextBox>(); foreach (TextBox tb in allTextBoxes) { tb.Text = ...; }
En employant cette méthode d'extension, vous pouvez parcourir efficacement toutes les zones de texte de vos panneaux séparés et leur attribuer des valeurs selon la logique souhaitée.
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!