2009-12-10 5 views
0

J'ai quelque chose qui ressemble à ceciBesoin d'aide pour essayer de comprendre pour saisir une colonne de données

 H1 H2 
CHK1 N1 D1 
CHK2 N2 D2 
CHK3 N3 D3 
CHKN NN DN 


     1  2 
3  4  5 
6  7  8 
9  10  11 

// control positions if you had a counter counting with the foreach loop. 

Alors H1 H2 & ne sont que quelques étiquettes, Chk est N cases à cocher et & D sont des étiquettes. Je génère ce genre de chose de façon dynamique.

Maintenant, je veux redimensionner dynamiquement certaines étiquettes. Je veux trouver toutes les étiquettes N1, N2, N3, NN et les redimensionner.

Donc, je ne suis pas sûr de savoir comment faire cela.

D'abord, je trouve tous les contrôles

foreach (Control c in panel.Controls) 
    { 
     if (c.GetType() == typeof(Label)) 
     { 


     } 


    } 

Maintenant, je ne suis pas sûr de savoir comment saisir ces N ceux. Comme N1 est le contrôle 4, N2 est le contrôle 7 et N3 est le contrôle 10.

Donc, au début, j'ai essayé d'obtenir tous les contrôles pairs, mais je me suis vite rendu compte que les contrôles N1 vont même alors impair.

Cela ne fonctionnera donc pas. Donc, je ne suis pas sûr de savoir comment écrire quelque chose pour obtenir ces contrôles que je veux.

+0

Pouvez-vous les suivre lorsque vous les créez? Stockez-les dans une liste pour pouvoir les référencer plus tard? –

Répondre

2

La plupart des contrôles ont une propriété de balise., Vous pouvez définir toutes les balises des contrôles dont vous avez besoin à la valeur souhaitée, puis dans la version, vous pouvez vérifier la valeur de balise.

foreach (Control c in Controls) 
if (c.Tag == "MyTag") 
{ 
    //Do required actions 
} 

Vous pourriez aussi penser à une fonction récursive, si l'un de ces contrôles sont dans le contrôle des conteneurs.

+0

J'aime cette façon. J'ai trouvé une façon d'utiliser (comptez% 3 == 1) et cela fonctionne s'attendre à ce que cela obtienne pour une raison quelconque la colonne D non N colonne donc pas sûr de ce qui s'est mal passé. Ça devrait me donner la colonne N alors peut-être que j'ai fait autre chose de mal mais j'aime mieux ça c'est plus sûr. Si je retournais les colonnes, je n'aurais pas à changer de code. La seule chose que vous devez faire est c.Tag.Tostring() puisque tag est un objet. – chobo2

Questions connexes