For each dans usercontrol

Signaler
Messages postés
139
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
15 mars 2016
-
Messages postés
14886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 mai 2020
-
Bonjour,


j'ai créé un user control avec plusieurs label et textbox.
j'insère plusieurs instance de ce user control sur une form.
je voudrais remplir les text box avec quelque chose du genre :

For Each formtextbox As TextBox In Me.Controls.OfType(Of TextBox)()



next


Mais avec ce code il ne me trouve pas les textbox des usercontrol comme faisant parti de me.control...

une idée pour les "trouver"

Merci

3 réponses

Messages postés
14886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 mai 2020
409
Bonjour,

Ton for each tu le fais dans le form?
Dans ce cas, forcément, il ne sont pas dans ta form mais dans ton user controle.
Tu devrais ecrire une méthode dans ton user control ou tu mets le contenu des textbox en paramétre.
Cette methode rempli les textbox.
Et dans ton form tu l'appelle pourt chacun de tes controles
Messages postés
139
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
15 mars 2016

Bonjour,

merci effectivement c'est la solution que j'ai trouvé pour l'instant.

Apres je trouve ça plus "lourd" à coder mais il semblerait que ce soit la "good practice" dans ce cas.

Si quelqu'un a une idée pour le faire façon bourrin rien que pour l'information je suis preneur

Merci



--
Messages postés
14886
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 mai 2020
409
Oui c'est la bonne pratique, car ce qui est interne au contrôle (comme pour toute classe) doit être géré par ce contrôle.
Si pour x raison tu dois changer ce comportement, ça doit être "transparent" pour les extérieurs qui parlent avec ton contrôle.

Admettons que tu aies 4 textbox, dans un premier temps tu veux que "un" apparaisse dans la première, "deux" dans la seconde, etc..
Ta méthode aura pour signature un truc du style
Public Sub MaMethode(Texte1 As String, Texte2 As String, Texte3 As String, Texte4 As String)


et tu l'appelleras comme ça
monControle.MaMethode("un","deux","trois","quatre")


Si à l'avenir, tu veux que "un" soit dans le textbox2, tu le géreras en interne, pour dehors l'ordre ne changera pas.
Messages postés
6798
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 mai 2020
107
Bonjour,

Voir ceci pour boucler sur les contrôles:

http://silkyroad.developpez.com/VBA/ControlesUserForm/