2010-11-22 4 views
1

J'ai cette situation, j'ai une winform qui a environ 10 à 15 lable et comboboxes qui ne sont pas visibles. maintenant à l'exécution je passe un nombre de ceux-ci à activer? leurs propriétés de nom sont de lable1 à lable16 et combobox1 à combobox16. J'utilise le code suivant seulement pour tester si je peux trouver les contrôles mais il semble échouer tous, ho et par le fait que ces contrôles et comboboxes sont sur un panneau.trouver des contrôles cachés sur winform et les rendre visibles à l'exécution?

ce qui suit est le code utilisé i:

foreach (Control ctrl in this.Controls) 
      { 
       if (ctrl is Label) 
       { 
        MessageBox.Show(((Label)ctrl).Text); 
       } 
      } 
+0

dans votre 'else', appeler cette méthode récursive. –

Répondre

1

Vous avez fait en quelque sorte répondu à votre propre question ... Vous ne trouvez pas les contrôles dans this.Control s mais Panel1.Controls :)

2

Vous devrez remplacer this.Controls avec this.Panel1.Controls ou ce que le nom de votre panneau de contrôle est.

Aussi mayne plutôt jeter un oeil à Control.ControlCollection.Find Method pour faire usage du nom de contrôle.

2

Vous devez rendre cela récursif.

Le ctrl lui-même a également un Controls. Si vous marchez tout l'arbre, vous finirez par trouver tous les contrôles.

0

vous pouvez vérifier si le contrôle actuel (ctrl) a des contrôles ou non pour une boucle à travers les

par exemple:

if (ctrl.Controls.Count >0) 
{ 
//do your logic here 
} 
Questions connexes