2008-12-17 9 views
3

J'ai un panneau avec une collection de contrôles dedans. Comment puis-je obtenir l'index d'un contrôle spécifique lors de l'itération à travers eux? J'utilise foreach pour itérer, mais il n'y a pas de propriété Index. Dois-je utiliser for x = 0... et renvoyer x lorsque ma correspondance est établie, ou quoi?Comment obtenir l'index de contrôle dans WinForms?

+1

Par curiosité, pourquoi avez-vous seulement besoin de l'index dans la collection de contrôles? Il pourrait y avoir une meilleure façon d'attaquer votre problème. –

Répondre

7

Vous pouvez utiliser:

panel.Controls.IndexOf(control); 

Ou vous pourriez itérer sur eux avec une boucle au lieu d'une boucle foreach. Ou vous pouvez simplement créer un index que vous incrémentez à l'intérieur de la boucle foreach.

1

Vous pouvez simplement utiliser la méthode IndexOf. Quelque chose comme panel1.Controls.IndexOf (textBox1);

0

Pour répondre à la question spécifique que vous avez demandé, oui, j'utiliser

pour (x = 0; x < panel.Controls.Count; i ++)

Cependant, si vous Ading dynamiquement des contrôles Pour le panneau, vous pouvez envisager de leur donner des noms uniques ou d'autres attributs d'identification via les propriétés .Name ou .Tag.

Ensuite, vous pouvez discriminer vos contrôles enfants avec plus de précision. Par curiosité, pourquoi avez-vous seulement besoin de l'index dans la collection de contrôles?

Questions connexes