2015-04-08 1 views
0

Je crée un UserControl avec d'autres contrôles à l'intérieur. Je veux créer une forme d'événement "composite" pour fournir les formulaires en utilisant le UserControl. Par exemple: J'ai beaucoup de panneaux à l'intérieur de UserControl. Je crée un EventHandler à l'intérieur du UserControl pour gérer tous les événements MouseDown de ces panneaux. À la fin je veux faire tous les événements MouseDown sur le UserControl pour apparaître comme juste MouseDown sur le parent.C# Composite Event

Je pourrais créer un nouvel événement comme MousePressed sur ce UserControl, mais je préfère aller avec le nom déjà existant MouseDown. Comment dois-je déclarer ce nouvel événement afin de "cacher" l'autre MouseDown Événement qui existe déjà?

J'espère que je pourrais expliquer ma question assez.

Merci d'avance.

+1

Je pense que cela peut vous montrer comment faire ce que vous cherchez: http://www.codeproject.com/Articles/5249/How-to-override-parent-class -Evénement-méthode-avec-vous – Kevin

+0

Merci. Il semble que j'ai trouvé une solution, je pensais probablement trop loin –

Répondre

1

Enregistrer tous les événements nécessaires dans le UserControl (sauf l'événement du UserControl lui-même, ce sera celui nécessaire pour s'inscrire sur le formulaire parent).

La plupart des événements semblent avoir une méthode utilisée pour les appeler. Vous pouvez appeler cette méthode en commençant par "On". Par exemple: OnMousePressed

// You can register all MouseDown Events you need in one EventHandler. 
private void Item_MouseDown(object sender, MouseEventArgs e) 
{ 
    // Call this method to call the UserControls event. 
    this.OnMouseDown(e); 

    // Register to the UserControl's MouseDown event where you want to catch it. 
}