Dans mon code, je dois parcourir les contrôles dans un GroupBox et ne traiter le contrôle que s'il s'agit d'un ComboBox. J'utilise le code:Boucler les contrôles
foreach (System.Windows.Forms.Control grpbxChild in this.gpbx.Controls)
{
if (grpbxChild.GetType().Name.Trim() == "ComboBox")
{
// Process here
}
}
Ma question est: au lieu de boucle à travers tous les contrôles et traiter uniquement les zones de liste déroulante est possible d'obtenir uniquement les zones de liste déroulante de la GroupBox? Quelque chose comme ceci:
foreach (System.Windows.Forms.Control grpbxChild in this.gpbx.Controls.GetControlsOfType(ComboBox))
{
// Process here
}
+1 pour mentionner la syntaxe OfType, mais présenté « pseudosolution » exige encore une boucle à travers tous les contrôles enfants. Ce qui ne résout pas le problème de base. – Cerebrus
@Cerebrus: Il ne nécessite pas de boucle si vous n'avez rien à faire avec. Si vous voulez juste la collection de ComboBox, vous pouvez simplement faire: Liste list = new Liste (GetControlsOfType (groupBox.Controls)); –
Merci Mehrdad ... cela fonctionne !!! Ne l'appelez pas pseudosolution. C'est la solution. Vous étiez juste en deçà de la clause where. S'il vous plaît modifier la réponse pour l'ajouter: public statique IEnumerable GetControlsOfType (contrôles Control.ControlCollection) où T: Contrôle –