évenement dans un bouton [Résolu]

Signaler
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
-
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006
-
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é

10 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
33
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 );
}
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
33
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 );
}
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

je vous remercie d'avance pour vos reponses

Maité
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
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
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
33
Oups à 2 minutes

en plus j'ai oublié un ptit "i++" quelque part.
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

Mille merci


ça marche nickel


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

Maité
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

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é
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
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
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

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é
Messages postés
54
Date d'inscription
mercredi 14 juin 2006
Statut
Membre
Dernière intervention
29 août 2006

merci pour vos reponses super ça marche

Maité