Почему все события проверяются в методе ButtonBase WndProc, .Net WinForms - PullRequest
1 голос
/ 03 августа 2010

Я создаю базовый класс для кнопки, которая наследуется от Control, а не ButtonBase.
Я использую отражатель, чтобы посмотреть на ButtonBase, чтобы убедиться, что я ничего не пропустил, и я озадаченсодержимое метода WndProc.
Там проверяются такие вещи, как кнопка вверх, щелчок и захват, измененные, которые, насколько я могу судить, все обрабатываются в соответствующих методах класса On.

Кто-нибудь знает, почему они там?

1 Ответ

1 голос
/ 03 августа 2010

Это также оболочка для родного элемента управления Windows. В двух словах:

  • 0x00f5 = BM_CLICK: запустить OnClick ()
  • 0x2111 = BN_CLICKED уведомление: запустить OnClick ()
  • куча обходных путей для решения OwnerDraw.

Вам не нужно беспокоиться об этом, поскольку вы не оборачиваете нативную кнопку и не нуждаетесь в рисовании владельца. Убедитесь, что вы внедрили IButtonControl, чтобы ваша кнопка работала правильно, когда нажаты Enter и Escape, и она выбрана в качестве кнопки «Принять / Отменить» формы. Не обязательно, но это автоматически, когда вы наследуете от ButtonBase вместо Control.

...