évenement dans un bouton [Résolu]

maitesn1 54 Messages postés mercredi 14 juin 2006Date d'inscription 29 août 2006 Dernière intervention - 14 août 2006 à 10:24 - Dernière réponse : maitesn1 54 Messages postés mercredi 14 juin 2006Date d'inscription 29 août 2006 Dernière intervention
- 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

Répondre au sujet
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 14 août 2006 à 10:51
+3
Utile
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 );
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Lutinore
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 14 août 2006 à 12:33
+3
Utile
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 );
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Lutinore
maitesn1 54 Messages postés mercredi 14 juin 2006Date d'inscription 29 août 2006 Dernière intervention - 14 août 2006 à 10:28
0
Utile
je vous remercie d'avance pour vos reponses

Maité
Commenter la réponse de maitesn1
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 14 août 2006 à 10:49
0
Utile
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
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 14 août 2006 à 10:52
0
Utile
Oups à 2 minutes

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


ça marche nickel


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

Maité
Commenter la réponse de maitesn1
maitesn1 54 Messages postés mercredi 14 juin 2006Date d'inscription 29 août 2006 Dernière intervention - 14 août 2006 à 11:57
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 14 août 2006 à 12:04
0
Utile
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
maitesn1 54 Messages postés mercredi 14 juin 2006Date d'inscription 29 août 2006 Dernière intervention - 14 août 2006 à 12:17
0
Utile
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
maitesn1 54 Messages postés mercredi 14 juin 2006Date d'inscription 29 août 2006 Dernière intervention - 14 août 2006 à 13:20
0
Utile
merci pour vos reponses super ça marche

Maité
Commenter la réponse de maitesn1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.