évenement dans un bouton

Résolu
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 à 10:24
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é

10 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
14 août 2006 à 10:51
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 );
}
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
14 août 2006 à 12: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 );
}
3
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 à 10:28
je vous remercie d'avance pour vos reponses

Maité
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 août 2006 à 10: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
0

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

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
14 août 2006 à 10:52
Oups à 2 minutes

en plus j'ai oublié un ptit "i++" quelque part.
0
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 à 11:21
Mille merci


ça marche nickel


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

Maité
0
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 à 11:57
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é
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 août 2006 à 12:04
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
0
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 à 12:17
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é
0
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
merci pour vos reponses super ça marche

Maité
0
Rejoignez-nous