For each in .Controls - ordre des contrôles

SpongeRobert Messages postés 4 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 13 juillet 2009 - 8 juin 2009 à 11:07
SpongeRobert Messages postés 4 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 13 juillet 2009 - 8 juin 2009 à 13:52
Bonjour à tous,

J'ai un Form qui contient un milier de contrôles graphiques et je dois recaculer un quart d'entre-eux régulièrement.

Pour ne pas avoir à les identifier un par un par leur nom j'utilise des boucles For Each.

Je me suis rendu compte en mode debug que l'ordre dans lequel ils étaient collectés ne correspondait ni à l'ordre alphabétique, ni à celui des tab-stops et ni encore à celui dans lequel les contrôles avaient été posés sur l'écran.

Quelqu'un aurait-il d'où les boucles For each collectent les contrôles et si cet endroit est un script quel risque j'aurais de les trier ?

Merci d'avance

4 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 juin 2009 à 12:22
Bonjour,

Logiquement il devraient être placés par ordre de leur génération par le designer... regarde ta Form.Designer.vb. Apres...

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
SpongeRobert Messages postés 4 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 13 juillet 2009
8 juin 2009 à 12:31
Justement, je viens de revérifier et ce n'est pas dans le même ordre que je les retrouve en debug For Each que sur .Designer.vb.

Peut-être est-ce un mix entre la chronologie des dépôts sur la Form et les tab-stops. Je vais quand même en inverser un ou deux sur .Designer.vb

A suivre

Merci
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 juin 2009 à 12:57
Re,

après vérification vb place bien les contrôles dans la collection du formulaire dans l'orde inverse à celui de l'ajout sur le formulaire :

Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(983, 409)
Me.Controls.Add(Me.TrackBar4)
Me.Controls.Add(Me.TrackBar3)
Me.Controls.Add(Me.TrackBar2)
Me.Controls.Add(Me.TrackBar1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

Voila un exemple du code du designer de form.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
SpongeRobert Messages postés 4 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 13 juillet 2009
8 juin 2009 à 13:52
Ouha, mille mercis, j'avais regardé que dans un sens... C'est malin.

A titre de revanche.
0
Rejoignez-nous