évenement dans un bouton [Résolu]

Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
- - Dernière réponse : maitesn1
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
- 14 août 2006 à 13:20
Bonjour tout le monde,
je souhaiterai associer un evenment click a des boutons qui sont créés au fur et a mesure qu'on parcourt une boucle while.Je voudrai si je clique sur le bouton qu'il me recupére le text d'une textBox qui lui est crée aussi dans la  meme boucle.
mon bout de code est ci dessous je ne sais pas comment faire pour associer l'evenement a un bouton qui est créé dans une boucle.
while

(rdr.Read())
{

//création des texBox
tb =

new
TextBox();tb.Name =

string.Concat(
"textBox", i);

//création des boutons
bt =

new
Button();bt.Name =

string.Concat(
"button", i);

i++;

}

Maité
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
3
Merci
Salut, il te suffit d'associer tout les boutons au même évènement :

public void Initialize( )
{
    int i = 0;

    While ( /*.. */ )
    {
        TextBox tb = new TextBox( );        tb.Name         tb.Text "TextBox" + i;
        // tb.Location ..


        Button b = new Button( );        b.Name         b.Text "Button" + i;
        b.Tag = tb;
        b.Click += new EventHandler( Button_Click );
        // b.Location ..


        this.Controls.AddRange( new Control[ ] { tb, b } );
    }
}


private void Button_Click( object sd, EventArgs e )
{
    Button b = ( Button )sd;
    TextBox tb = ( TextBox )b.Tag;


    MessageBox.Show( tb.Text );
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
3
Merci
Tag c'est pas une collection : ) juste un référence de type object, tu peux donc tout y mettre, par exemple un tableau de contrôles. Tu peux aussi y mettre la variable i et réécrire l'évènement comme ça :

private void Button_Click( object sd, EventArgs e )
{
    Button b = ( Button )sd;
    int index = ( int )b.Tag;


    MessageBox.Show( this.Controls[ "TextBox" + index ].Text );
    MessageBox.Show( this.Controls[ "ComboBox" + index ].Text );
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 223 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
0
Merci
je vous remercie d'avance pour vos reponses

Maité
Commenter la réponse de maitesn1
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
42
0
Merci
Salut,
Tu peux par exemple faire qu'ils aient tous le même eventHandler, et ensuite tu fais un switch sur le sender pour savoir quel bouton a envoyé l'event.

VC# forever
Commenter la réponse de cs_Bidou
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
0
Merci
Oups à 2 minutes

en plus j'ai oublié un ptit "i++" quelque part.
Commenter la réponse de Lutinore
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
0
Merci
Mille merci


ça marche nickel


bonne journée et encore une fois merci pour vos reponses

Maité
Commenter la réponse de maitesn1
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
0
Merci
salut c'est encore moi,
si je crée un autre contrôle, un comboBox et je veux recupérer le text de l'item selectionné et que si c'est par exple OK,je recupere le text associé au textBox.
J'ai essayé mais ça ne marche pas j'ai fais deux fois un tag sur le bouton:
b.Tag = tb;
b.Tag=cb;
et dans la methode button_click

private
void Button_Click(
object sd,
EventArgs e ){

Button b = (
Button )sd;

TextBox tb = (
TextBox )b.Tag;

ComboBox cb = (
ComboBox)b.Tag;

if

(cb.SelectedText ==
"OK"){

MessageBox.Show(tb.Text);}

}

Mais j'ai une exeception.comment je dois faire pour pouvoir associer les deux controle a l'avenment click btuon

Maité
Commenter la réponse de maitesn1
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
42
0
Merci
On ne peut mettre qu'un object par tag, pas deux !
Alors soit tu fais une classe qui encapsule la textBox et le combo, soit tu fais un event séparé...

VC# forever
Commenter la réponse de cs_Bidou
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
0
Merci
salut Bidou ,
Est ce que tu aurais un exemple d'une classe qui encapsule deux controles car je pense que c'est la meilleure solution puisque les deux contrôles interviennent dans le meme event.

Maité
Commenter la réponse de maitesn1
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
0
Merci
merci pour vos reponses super ça marche

Maité
Commenter la réponse de maitesn1