Création d'events dans un UserControl - C#/.NET managed - Programmation
Marsh Posté le 24-07-2009 à 20:08:25
je pense qu'il faut que tu crées simplement un event custom sur ton UC. Ensuite, au click de tes deux boutons, tu relances ton events custom. ce qui te permettra de l'intercepter dans ton form.
Tu déclares donc ceci dans ton uc:
public event EventHandler<EventArgs> buttonClick;
Dans le click de tes buttons tu ajoutes ceci
if (buttonClick != null)
buttonClick.Invoke(sender, EventArgs.Empty);
Dans le constructeur de ta form tu ajoutes ceci:
this.UserControl1.buttonClick += new EventHandler(uc_buttonClick);
private void uc_buttonClick(Object sender, EventArgs e)
{
if (sender is Button)
{
//traitement sur ta dropdown
((Button)sender).Text = "J'ai cliqué ici";
}
}
Si maintenant, tu souhaites récupérer des informations de ton UserControl via l'EventArgs.
Crée alors une nouvelle class qui hérite de EventArgs dans lequel tu mettra toi même les informations qui doivent être transmise à ta form.
hope this help
Marsh Posté le 25-07-2009 à 11:00:05
Merci pour l'info, entre temps j'ai testé quelques trucs de mon côté, j'ai effectivement créé un event dans mon UC, puis un delegate. De cette manière je récupère mon évènement dans la form, par contre je suis obligé de faire un toolStripDropDownButton1.DropDown.Close pour que le menu se referme après sélection.
Je ne sais pas quelle méthode est la plus propre ayant peu de connaissance sur ce type de sujets...
Marsh Posté le 25-07-2009 à 12:13:30
ça me parait adéquat le close sur la dropdown.
Pour ce qui est du delegate, c'est pareil. Faut pas oublié qu'au nouveau code intermédiaire généré par le compilateur .NET (MSIL), un event et un delegate, c'est exactement la même chose.
Marsh Posté le 25-07-2009 à 13:55:52
Ah d'accord, je ne savais pas, je vais me renseigner sur le sujet. Merci pour ton aide
Marsh Posté le 23-07-2009 à 17:17:05
Bonjour,
Je bosse actuellement sur une Form qui contient un toolStrip. Dans cette dernière j'affiche un UserControl, ce dernier est basique, il contient simplement deux boutons.
Au final j'ai cette organisation :
Form1
- ToolStrip
- DropDownButton
- UserControl
- Button1
- Button2
Jusque là tout va bien, quand je click sur le DropDownButton de ma ToolStrip, j'ai l'affichage de mon control mais maintenant je n'arrive pas à gérer les évènements de chacun de mes deux boutons contenus dans mon UserControl... Comment fait pour que, lorsque je clique sur un de mes deux boutons, le DropDownButton se ferme et le resultat est renvoyé dans la Form principale ?
Je suis tombé là dessus mais j'ai bien du mal à déchiffrer tout ce qui est fait dans cette source...
http://www.codeproject.com/KB/menu [...] pDown.aspx
Merci d'avance pour vos réponses.
Message édité par Twiddy le 23-07-2009 à 17:20:44