Maison > développement back-end > C++ > Comment puis-je parcourir efficacement les zones de texte sur plusieurs panneaux dans une application WinForms ?

Comment puis-je parcourir efficacement les zones de texte sur plusieurs panneaux dans une application WinForms ?

Barbara Streisand
Libérer: 2025-01-07 13:52:40
original
928 Les gens l'ont consulté

How Can I Efficiently Loop Through TextBoxes on Multiple Panels in a WinForms Application?

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
Copier après la connexion

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();
}
Copier après la connexion

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);
}
Copier après la connexion

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 = ...;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal