OVH Cloud OVH Cloud

Controls crées dynamiquement

5 réponses
Avatar
David CALDERINI
Bonjour,

Je crée au moyen d'une boucle des controls dynamiquement de cette façon:

// Ajoute les labels.
Label lbl1 = new Label();
lbl1.Size = new Size(Convert.ToInt16(txt_largeur.Text),15);
lbl1.Location = new Point( emplacementlargeur, emplacementhauteur+
Convert.ToInt16(txt_hauteur.Text)+2 );
lbl1.Text=chemin;
lbl1.Click += new System.EventHandler(this.lbl1_Click);
this.Controls.Add( lbl1 );

L'inconvéniant c'est que tous les controls crées s'appellent 'lbl1'.
Je ne suis pas arrivé à concaténer une variable derrière.
Dans le genre:

Label lbl1+i = new Label();
Fonctionne pas.

Y a t'il un moyen d'avoir un nom unique ou un moyen de repère (lors
d'évènement par exemple)?


Merci d'avance.

5 réponses

Avatar
Lloyd Dupont
hum, hum.. je ne suis pas sur que tu t'exprimes tres bien....
changer le nom de la variable ne changeras pas grand chose au label lui
meme.
tu seras peut-etre interesser par les proprietees
control.Name
control.Tag
par contre.

"David CALDERINI" wrote in
message news:
Bonjour,

Je crée au moyen d'une boucle des controls dynamiquement de cette façon:

// Ajoute les labels.
Label lbl1 = new Label();
lbl1.Size = new Size(Convert.ToInt16(txt_largeur.Text),15);
lbl1.Location = new Point( emplacementlargeur, emplacementhauteur+
Convert.ToInt16(txt_hauteur.Text)+2 );
lbl1.Text=chemin;
lbl1.Click += new System.EventHandler(this.lbl1_Click);
this.Controls.Add( lbl1 );

L'inconvéniant c'est que tous les controls crées s'appellent 'lbl1'.
Je ne suis pas arrivé à concaténer une variable derrière.
Dans le genre:

Label lbl1+i = new Label();
Fonctionne pas.

Y a t'il un moyen d'avoir un nom unique ou un moyen de repère (lors
d'évènement par exemple)?


Merci d'avance.


Avatar
amplitude
Lloyd Dupont a écrit :
hum, hum.. je ne suis pas sur que tu t'exprimes tres bien....
changer le nom de la variable ne changeras pas grand chose au label lui
meme.
tu seras peut-etre interesser par les proprietees
control.Name
control.Tag
par contre.

"David CALDERINI" wrote in
message news:

Bonjour,

Je crée au moyen d'une boucle des controls dynamiquement de cette faç on:

// Ajoute les labels.
Label lbl1 = new Label();
lbl1.Size = new Size(Convert.ToInt16(txt_largeur.Text),15);
lbl1.Location = new Point( emplacementlargeur, emplacementhauteur+
Convert.ToInt16(txt_hauteur.Text)+2 );
lbl1.Text=chemin;
lbl1.Click += new System.EventHandler(this.lbl1_Click);
this.Controls.Add( lbl1 );

L'inconvéniant c'est que tous les controls crées s'appellent 'lbl1' .
Je ne suis pas arrivé à concaténer une variable derrière.
Dans le genre:

Label lbl1+i = new Label();
Fonctionne pas.

Y a t'il un moyen d'avoir un nom unique ou un moyen de repère (lors
d'évènement par exemple)?


Merci d'avance.







Oui, ou sinon pr fair plus générique, tu te sert du sender lors d'eve nement
par exemple dans le OnClick :

((Label)sender).Text te retournera le Text du label cliqué.
Avatar
Bonjour,

Oui en effet je me suis un peu mélangé les pinceaux.
Merci de tes conseils j'ai bien avancé.
Mais mon problème principale n'est pas résolu.
Admettons que j'ai 50 labels qui se créent dynamiquement.

J'aimerai lors du clic qu'il m'affiche le contenue de la
propriété Text du label dans un MessageBox.

Comment faire pour qu'il sache sur quel label j'ai cliqué?

J'ai essayer de rajouté un évènement de type

unLabel.Click += new System.EventHandler
(this.unLabel_Click);

dans la création, mais sans succès...

Merci d'avance...







-----Message d'origine-----
Lloyd Dupont a écrit :
hum, hum.. je ne suis pas sur que tu t'exprimes tres




bien....
changer le nom de la variable ne changeras pas grand




chose au label lui
meme.
tu seras peut-etre interesser par les proprietees
control.Name
control.Tag
par contre.

"David CALDERINI"




wrote in
message news:9BA5AED2-FB0D-4AF0-B8FE-






Bonjour,

Je crée au moyen d'une boucle des controls






dynamiquement de cette façon:

// Ajoute les labels.
Label lbl1 = new Label();
lbl1.Size = new Size(Convert.ToInt16






(txt_largeur.Text),15);
lbl1.Location = new Point( emplacementlargeur,






emplacementhauteur+
Convert.ToInt16(txt_hauteur.Text)+2 );
lbl1.Text=chemin;
lbl1.Click += new System.EventHandler(this.lbl1_Click);
this.Controls.Add( lbl1 );

L'inconvéniant c'est que tous les controls crées






s'appellent 'lbl1'.
Je ne suis pas arrivé à concaténer une variable






derrière.
Dans le genre:

Label lbl1+i = new Label();
Fonctionne pas.

Y a t'il un moyen d'avoir un nom unique ou un moyen de






repère (lors
d'évènement par exemple)?


Merci d'avance.







Oui, ou sinon pr fair plus générique, tu te sert du


sender lors d'evenement
par exemple dans le OnClick :

((Label)sender).Text te retournera le Text du label


cliqué.

.



Avatar
amplitude
a écrit :
Bonjour,

Oui en effet je me suis un peu mélangé les pinceaux.
Merci de tes conseils j'ai bien avancé.
Mais mon problème principale n'est pas résolu.
Admettons que j'ai 50 labels qui se créent dynamiquement.

J'aimerai lors du clic qu'il m'affiche le contenue de la
propriété Text du label dans un MessageBox.

Comment faire pour qu'il sache sur quel label j'ai cliqué?

J'ai essayer de rajouté un évènement de type

unLabel.Click += new System.EventHandler
(this.unLabel_Click);

dans la création, mais sans succès...

Merci d'avance...





En fait, ds ta boucle qui créer les label, tu fait donc bien
unLabel.Click += new System.EventHandler(this.unLabel_Click);

et à l'extérieur de la boucle tu places un seul OnClick et dedans tu fais :

MessageBox.Show(((Label)sender).Text);


Voilà. En fait, tous tes label pointent vers un seul et même Handler.

Dans ce Handler, tu lui indiques que l'objet sender est un textBox, il
obtient alors toutes ses fonctions et capacités.

Bonne chance :)
Avatar
David Calderini
Merci beaucoup, sa fonctionne super bien.






-----Message d'origine-----
a écrit :
Bonjour,

Oui en effet je me suis un peu mélangé les pinceaux.
Merci de tes conseils j'ai bien avancé.
Mais mon problème principale n'est pas résolu.
Admettons que j'ai 50 labels qui se créent




dynamiquement.

J'aimerai lors du clic qu'il m'affiche le contenue de




la
propriété Text du label dans un MessageBox.

Comment faire pour qu'il sache sur quel label j'ai




cliqué?

J'ai essayer de rajouté un évènement de type

unLabel.Click += new System.EventHandler
(this.unLabel_Click);

dans la création, mais sans succès...

Merci d'avance...





En fait, ds ta boucle qui créer les label, tu fait donc


bien
unLabel.Click += new System.EventHandler


(this.unLabel_Click);

et à l'extérieur de la boucle tu places un seul OnClick


et dedans tu fais :

MessageBox.Show(((Label)sender).Text);


Voilà. En fait, tous tes label pointent vers un seul et


même Handler.

Dans ce Handler, tu lui indiques que l'objet sender est


un textBox, il
obtient alors toutes ses fonctions et capacités.

Bonne chance :)
.