Sur le GridMenu (que je suppose est un autre contrôle personnalisé), exposer l'événement ButtonClick en déclarant comme public:
public event EventHandler ButtonClick;
Si vous le souhaitez, vous pouvez créer un gestionnaire d'événements personnalisé en définissant un délégué et une classe d'arguments d'événement personnalisée. Quelque part dans la logique de ce contrôle, vous devrez augmenter l'événement (peut-être dans les gestionnaires d'événements Clicked contenus dans GridMenu, les événements peuvent être cascadés). Codage en C#, vous devrez vérifier que l'événement n'est pas nul (ce qui signifie qu'au moins un gestionnaire est attaché) avant de déclencher l'événement.
Maintenant, cet événement est visible par TheGrid, qui contient votre GridMenu. Maintenant, vous devez créer un "pass-through" pour permettre aux utilisateurs de TheGrid de joindre des gestionnaires sans avoir à connaître GridMenu. Vous pouvez le faire en spécifiant un événement sur TheGrid qui ressemble à une propriété, et se fixe et se détache des gestionnaires de l'événement intérieur:
public event EventHandler GridMenuButtonClick
{
add{ GridMenu.ButtonClick += value;}
remove { GridMenu.ButtonClick -= value;}
}
De la marge bénéficiaire d'un contrôle contenant un contrôle TheGrid, vous pouvez spécifier le gestionnaire d'événements en l'attachant à OnGridMenuButtonClicked comme vous le vouliez.
J'avais supposé quelque chose comme ceci était l'approche à prendre mais peu importe ce que je fais je ne peux pas obtenir l'intellisence pour reconnaître OnGridMenuButtonClicked. –
@ D.Forrest: Vous devez utiliser GridMenuButtonClick au lieu de OnGridMenuButtonClicked – SKINDER
Bien sûr, j'ai compris cela. J'appelle en fait mon événement "OnSearchClick". Mais il n'est définitivement pas visible via le balisage et les points d'arrêt dans le débogage sur les déclarations d'ajout/suppression ne sont pas touchés. –