Déclaration dynamique d'un bouton et utilisation d'événement(s)

Résolu
SpiritOFire Messages postés 2 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 28 octobre 2009 - 28 oct. 2009 à 18:09
dooba01 Messages postés 2 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 2 décembre 2009 - 2 déc. 2009 à 11:19
Bonjour à tous,

je suis actuellement en train de réaliser un petit projet pour mes cours en c# à l'aide de visual studio 2005 et je bloque sur un petit truc, peut être pourriez vous m'aider.

Alors pour commencer, j'ai un formulaire dans lequel j'ajoute des boutons grâce à une boucle pour. J'ai choisi ce moyen car je n'avais pas trop envi d'ajouter les boutons un par un. Jusque là tout va bien.

Mais le souci est que je souhaiterai que pour chaque bouton que j'ai ajouté, lorsqu'on clique dessus, que la couleur change. Après une recherche j'ai trouvé ceci :

- déclaration d'un nouvel événement pour le bouton créé
Button journee = new Button();
journee.Click += new EventHandler(JourneeButton_Click);

- ensuite création de la méthode "JourneeButton_Click"
private void JourneeButton_Click(object sender, EventArgs e)
{
...
}
Le problème est que je ne sais pas quoi mettre à la place des points de suspension. Si je mets : this.BackColor = Color.MaCouleur;
cela me change le fond du formulaire, or je veux changer uniquement la couleur du bouton (ou son texte ou autre chose).

Je ne sais pas si la méthode est bonne, mais toutes les propositions sont les bienvenues.

Merci d'avance pour vos réponses.

5 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
28 oct. 2009 à 18:37
Salut,


  private void Button_Click( object sender, EventArgs e )
        {
            Button button = ( Button )sender;
            button.BackColor = Color.Blue;
        }
3
SpiritOFire Messages postés 2 Date d'inscription vendredi 8 mai 2009 Statut Membre Dernière intervention 28 octobre 2009
28 oct. 2009 à 18:48
Oui !!! Merci pour la réponse rapide.

J'avais trouvé un autre moyen entre temps mais je ne sais pas si la méthode n'est pas un peu lourde. Je créais une nouvelle classe héritée de la classe button et je mettais l'événement dedan.

class Journee : Button
{
public Journee()
{
this.Click += new EventHandler(Journee_Click);
}
private void Journee_Click(object sender, EventArgs e)
{
this.BackColor = Color.Gainsboro;
}
}

Je ne sais pas ce qui est mieux, mais j'adopte ta méthode elle est moins "longue".

Merci encore.
0
dooba01 Messages postés 2 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 2 décembre 2009
30 nov. 2009 à 16:51
je voulais savoir slp comment vous avez réussit à créer tes boutons avec une boucle for ; merci de vouloir me répondre
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
1 déc. 2009 à 10:05
AMICAL BONJOUR A TOI AUSSI

Pour ça, il suffit de mettre une boucle for autour du code qui génère les boutons !

for (int i = 0; i < nb; i++)
{
    Button journee = new Button();
    MonConteneur.Controls.Add(journee); // On le place dans un conteneur
    journee.Size = new Size(100, 30);
    journee.Location = new Point(0, 30 * i); // Je te conseille de mettre une position qui dépend de i, sinon ils seront superposés
    journee.Click += new EventHandler(journee_Click);
    journee.Text = "MonBouton" + (i + 1).ToString();
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0

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

Posez votre question
dooba01 Messages postés 2 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 2 décembre 2009
2 déc. 2009 à 11:19
merci pour cette solution :)
0
Rejoignez-nous