Designation d'un controle par un nom

Résolu
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012 - 30 avril 2007 à 10:43
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012 - 30 avril 2007 à 20:56
Salut tout le monde. je suis en stage informatique et je fait du dotnet
je créer des controles dynamiquement dans mon application et je voulais savoir si CT possible de les utiliser directement par leur nom. Apparemment on peut les utilser comme ça
Me.controls(integer)

mais ce que je voudrais c'est genre me.controls("mon_controle_1")
c'est possible un truc dans le style?

jme fait comprendre? :)
merci d'avance

@+
Sebrs1

19 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
30 avril 2007 à 17:30
Alors, on peut penser que tu n'as pas le 2.0.
vérifies dans les paramètres de Windows (Ajout suppression de programmes), si tu as le 2.0, tu le trouveras dans la liste!

à+

PS: si tu ne l'as pas, sois tu te le procures, soit tu t'écris un observateur secondaire, qui reçoit un clé de type String, et qui énumère la collection de control jusqu'à ce qu'il trouve la bonne clé. Après quoi, il te renvoie la référence au control trouvé.
rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 avril 2007 à 11:00
Tout à fait, à partir du moment ou la propriété .Name du controle est renseignée avec un nom unique

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012
30 avril 2007 à 11:28
ouai mais comment est-ce que je dois faire?
parce que si je met me.controls("moncontrol") il me met une erreur de cast de "moncontrol" en integer....

@+
Sebrs1
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 avril 2007 à 11:40
exemple :

        Dim ctrl As New Button
        ctrl.Name = "LeBoutonAControler"
        Me.Controls.Add(ctrl)

        Me.Controls("LeBoutonAControler").BackColor = Color.Red
        Me.Controls("LeBoutonAControler").Text = "Ca Marche"
        Me.Controls("LeBoutonAControler").Visible = True
        Me.Controls("LeBoutonAControler").Location = New Point(50, 25)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012
30 avril 2007 à 11:46
ben ecoute moi sa marche pas, en plus je manipule aussi des listbox alors g pas acces aux propriétés items  qui sont propres aux listbox ...

@+
Sebrs1

PS (qui ne signifie pas playstation :-)) : visitez mon site qui fait ses début svp
http://universal-glandeur.fr.st
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 avril 2007 à 11:57
C'est plutot étrange.

T'es bien en VB2005 ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012
30 avril 2007 à 12:13
je developpe en VB.net
donc ptetre que ton exemple marche en VB normal mais sa a pas l'air de marcher pour mon truc, il aime pas :)

@+
Sebrs1

PS (qui ne signifie pas playstation :-)) : visitez mon site qui fait ses début svp
http://universal-glandeur.fr.st
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
30 avril 2007 à 12:25
Salut, je suis en Vb 2005 et ceci marche :

Dim ctrl As New ListBox
        ctrl.Name = "LaListBoxAControler"
        Me.Controls.Add(ctrl)

        Dim MyListBox As ListBox = Me.Controls("LeBoutonAControler")

        MyListBox.Items.Add("Salut")
        MyListBox.Items.Add("ca")
        MyListBox.Items.Add("va ?")

si ca ne marche pas, montre nous comment tu fait pour instancier tes controles et les placer sur ton formulaire.

A plus.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 avril 2007 à 13:21
Mon code est fait en VB2005, c'est à dire du VB .NET. Mais si tu dit VB.Net tu veux surrement dire VB.Net 2003.
Je ne l'ai pas sous la main pour tester, il se peut qu'il y ait quelques petites différences.

Ca bloque sur quelle ligne exactement ??? (éventuellement, met ton code s'il ne s'agit pas du mien que tu teste)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012
30 avril 2007 à 13:54
alors voila comment ma listebox est instanciée :

'1 listbox pour les employes
Dim lst
As
New ListBox()
lst.Size =
New Size(200, 95)
lst.Location =
New Point(184, 24)
lst.Name = "lst_" & nombrePlanning.ToString

et quand j'essaye de faire ça :
Dim
lst
As ListBox = TabPage1.Controls("lst_" & num)

ben sa met comme quoi le cast de "lst_" & num en Integer est non-valide, parce qu'a la base dans les parenthese, il attend un entier et non une chaine
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 avril 2007 à 14:18
Sait-on jamais, peut-etre en faisant
Dim nom as String = "lst_" & num
Dim
lst
As ListBox = TabPage1.Controls(nom)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
30 avril 2007 à 14:44
Bizzare, ton code ne provoque aucune erreur chez moi. Et si tu fait :

Dim lst As ListBox = TabPage1.Controls("lst_" & num.ToSting)

A plus.
0
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012
30 avril 2007 à 15:07
pas besoin de mettre en rouge et gros, l'erreur est toujours la même lol voici exactement ce que ça dit :


Une exception non gérée du type 'System.InvalidCastException' s'est produite dans microsoft.visualbasic.dll


Informations supplémentaires : Cast de la chaîne "lst_0" en type 'Integer' non valide.

donc voila
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
30 avril 2007 à 15:24
Ce que je comprend pas c'est pourquoi il essaye de caster en integer alors qu'il éxiste une surcharge qui utilise une chaine de litéral.
Le TabPage1 est bien un Controle TabControl ? Comment tu l'ajoute sur ta feuille (au moment du design ou tu l'instancie par le code) ?
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
30 avril 2007 à 15:48
Au fait, tu est en VB2005 ou VB2003 ? Combien de surcharges tu a pour la méthode TabPage1.controls() ?
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
30 avril 2007 à 17:10
Salut sebrs1, salut à tous,

ton bout de code était bref, mais malheureusement, il laisse planer tout un tas de doutes, avec par exemple, la 1ère instance de lst se retrouve-t-elle ajoutée dans la collection controls du TabPage1?.

d'où mes questions :

- es-tu sûr que num contient une valeur?
- es-tu sûr que la concaténation donne bien une clé valide (correspondant donc au name d'un control existant dans TabPage1.Controls)?
- es-tu sûr que ta ListBox est bien ajoutée dans la collection controls du TabPage (pas visuellement, mais belle et bien contenue dans un parent)? D'accord, c'est un peu la même question, mais raison de plus pour se la poser :)

Pour être plus généraliste, et corroborer ce que t'ont dit les autres membres, et pour que personne ne pense que tu hallucines, il semble en effet qu'on puisse accéder à un objet de type Control.ControlCollection (System.Windows.Forms) via son membre Item, qui tolère une valeur de type Int32 (dans les versions 2.0, 1.1 et 1.0 du .NET Framework, et dans les versions 2.0 et 1.0 du .NET Compact Framework) ou de type String (mais ce, uniquement dans la version 2.0 du .NET Framework).

Alors, s'il te plait, n'aies pas honte de ne pas avoir beaucoup de sous, et dis nous précisément quelle version tu utilises? :)

à+
rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012
30 avril 2007 à 17:11
oui c bien un tabcontrol et il est ajouté en mode design.
entre 2003 et 2005 je sais pas. mais je sais qu'il m'indique qu'il y a que la possibilité av des integer.

@+
Sebrs1
0
PurBonheur Messages postés 66 Date d'inscription samedi 24 février 2007 Statut Membre Dernière intervention 7 octobre 2007 1
30 avril 2007 à 17:31
Pour savoir si tu a 2003 ou 2005, regarde dans le menu '?'->'A propos de visual studio'. La 2005 corespond à la version 8.0 et la version du framework est indiqué.

Si tu dis que tu n'a que la surcharge avec interger, c'est certainement .Net 1.0 ou 1.1.
regarde si tu a : TabPage1.controls.find(Key as String, Boolean)  ca te renvois un tableau de controles, mais si tu n'a qu'un controle par nom, alors le tableau ne contiendras qu'un objet.
0
sebrs1 Messages postés 81 Date d'inscription dimanche 15 avril 2001 Statut Membre Dernière intervention 20 novembre 2012
30 avril 2007 à 20:56
merci pour vos réponse, jpense que je ferai ma propre méthode pour chercher un composant a partir du nom. y'a pas d'autres solutions
rvblog t'as peut-etre zappé le tout debut de mon premier message mais j'ai dis que j'étais en stage, donc les sous , c'est pas moi qui les débourses, et donc jm'en fou un peu.

merci

@+
Sebrs1
0
Rejoignez-nous