Controle dynamique

Résolu
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 24 avril 2012 à 23:32
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 - 26 avril 2012 à 00:17
Bonsoir tout le monde,

Je cree des controles dynamiquement dans une Sub: le bouton 'btnTest', le TextBox 'txtTest'... (declare dans cette Sub), btnTest utilise avec un AddHandler.

Quand je veux utiliser le code ci-dessous, cela ne marche pas.
Le texte "Panel1.txtTest" est souligne avec l'erreur suivante: "txtTest is not a member of System.Windows.Forms.Panel".

Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim fbdPicturesFolder As New FolderBrowserDialog
fbdFolder.RootFolder = Environment.SpecialFolder.Desktop
If fbdFolder.ShowDialog() = DialogResult.OK Then
   Panel1.txtTest.text = fbdFolder.SelectedPath
End If
End Sub


Je crois comprendre le probleme (txtTest n'est pas encore cree, donc ne peut pas etre un membre de Panel1), mais je ne vois vraiment pas comment contourner ce probleme, tout en gardant mes controles dynamiques.
J'ai essaye de declarer txtTest en dehors de sa Sub, mais sans succes.

Existe-t-il un moyen de faire en gardant ces controles dynamiques ou bien dois-je attaquer le probleme differement?
Peut-etre que je fais trop complique???

A+
JLuc01

3 réponses

NHenry Messages postés 15116 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 9 mai 2024 159
24 avril 2012 à 23:50
Bonjour,

Il faut que tu utilises une variable/attribut.

Dim MonBouton As Button

Dans une Sub/Function :
MonBouton=New Button

Et pour l'utiliser :
MonBouton.*

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
cs_gide_x Messages postés 37 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 20 mai 2016 1
25 avril 2012 à 00:34
Salut !

A voir comme ça, ceci pose problème : [i] Panel1.txtTest.text = fbdFolder.SelectedPath
/i

Ton TextBox fait partie de la collection de contrôles de Panel1 !!!

Essaye plutôt ceci:
   Panel1.controls("txtTest").text = fbdFolder.SelectedPath

(Même si pas encore déclaré au moment de la compilation, ça passe. ça plante uniquement si il n'est créé au moment de l'appel.)

ou directement

   txtTest.text = fbdFolder.SelectedPath

(Ne passe pas si n'est pas déclaré)

JD.
0
cs_JLuc01 Messages postés 206 Date d'inscription samedi 17 janvier 2009 Statut Membre Dernière intervention 5 mars 2013 1
26 avril 2012 à 00:17
Bonsoir,

J'allais commencer mon message par: "Je ne crois pas que vous ayez bien compris mon probleme."
Et continuer par des explications compliquees.

En fait, en relisant plusieurs fois la breve reponse de NHenry, j'ai finalement tout compris.
Et merci bien, ca marche.

Merci a tous les deux de s'etre penche sur ce probleme.

Pour info, je suis content d'avoir compris ce point interessant sur les controles dynamiques.
MAIS, finalement, je n'ai pas besoin d'utiliser des controles dynamiques, car je peux tout creer en design. En fait, j'utilise pas mal les controles dynamiques en ce moment et j'ai tendance a les utiliser a toutes les sauces.

Merci encore,
JLuc01
0
Rejoignez-nous