2010-08-03 17 views
1

Je crée une classe de base pour un bouton qui hérite de Control par opposition à ButtonBase.
J'utilise réflecteur pour regarder ButtonBase pour m'assurer que je ne néglige rien d'important et je suis intrigué avec le contenu de la méthode WndProc.
Il y a des contrôles là-dedans pour des choses comme le bouton, le clic et la capture qui, pour autant que je sache, sont tous traités dans les méthodes 'On' de la classe.Pourquoi toutes les vérifications d'événement dans la méthode ButtonBase WndProc, .Net WinForms

Est-ce que quelqu'un sait pourquoi ils sont là?

Répondre

1

Il s'agit également d'un wrapper pour le contrôle de bouton Windows natif. En un mot:

  • 0x00f5 = BM_CLICK: exécuter OnClick()
  • 0x2111 = notification BN_CLICKED: exécuter OnClick()
  • un tas de solutions de contournement pour traiter OwnerDraw.

Vous n'avez pas à vous inquiéter de tout cela puisque vous n'emballez pas un bouton natif et n'avez pas besoin de dessiner par le propriétaire. Assurez-vous d'implémenter IButtonControl afin que votre bouton se comporte correctement lorsque vous appuyez sur Entrée et Echap et qu'il soit sélectionné comme Accept/CancelButton du formulaire. Non strictement nécessaire, mais il est automatique lorsque vous héritez de ButtonBase au lieu de Control.

+0

Merci, cela a du sens maintenant. – Jules