Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1686 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Création d'events dans un UserControl

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création d'events dans un UserControl

n°1908058
Twiddy
Posté le 23-07-2009 à 17:17:05  profilanswer
 

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.

Code :
  1. private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             UserControl1 test = new UserControl1();
  4.             ToolStripControlHost testHost = new ToolStripControlHost(test);
  5.             ToolStripDropDown dropDown = new ToolStripDropDown();
  6.             dropDown.Items.Add(testHost);
  7.             this.toolStripDropDownButton1.DropDown = dropDown;
  8.         }


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
mood
Publicité
Posté le 23-07-2009 à 17:17:05  profilanswer
 

n°1908418
moi23372
Posté le 24-07-2009 à 20:08:25  profilanswer
 

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


Message édité par moi23372 le 24-07-2009 à 20:38:16

---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1908489
Twiddy
Posté le 25-07-2009 à 11:00:05  profilanswer
 

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...

n°1908495
moi23372
Posté le 25-07-2009 à 12:13:30  profilanswer
 

ç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.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1908510
Twiddy
Posté le 25-07-2009 à 13:55:52  profilanswer
 

Ah d'accord, je ne savais pas, je vais me renseigner sur le sujet. Merci pour ton aide :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Création d'events dans un UserControl

 

Sujets relatifs
Creation dynamique d'accesseursCreation de fichier composé de plusieurs autres
BDD creation d'une application ou simple migration?création d'un programme générant des nuages de point, et histogrammes
Création nouvelle application Sous Visual StudioErreur suite à la création d'une DLL
Création moteur de recherche alternatifQuel est le coût de la création d'un objet ne contenant pas de donnée
Création dynamique Zone de Texte ACCESS 2007Problème de script création utilisateurs Active Directory
Plus de sujets relatifs à : Création d'events dans un UserControl


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR