为什么所有事件都在ButtonBase WndProc方法中检查,.Net WinForms

时间:2010-08-03 17:18:44

标签: c# .net vb.net winforms wndproc

我正在为一个按钮创建一个基类,该按钮继承自Control而不是ButtonBase 我正在使用反射器来查看ButtonBase,以确保我不会忽略任何重要的事情,我对WndProc方法的内容感到困惑。
有关于按钮,点击和捕获更改等内容的检查,据我所知,这些都是在相关的“On”方法中处理的。

有谁知道他们为什么在那里?

1 个答案:

答案 0 :(得分:1)

它也是本机Windows按钮控件的包装器。简而言之:

  • 0x00f5 = BM_CLICK:运行OnClick()
  • 0x2111 = BN_CLICKED通知:运行OnClick()
  • 处理OwnerDraw的一堆变通方法。

您不必担心任何此问题,因为您不包装本机按钮并且不需要所有者绘制。确保实现IButtonControl,以便按下Enter和Escape时按钮的行为正常,并将其选为表单的Accept / CancelButton。不是绝对必要,但是当你从ButtonBase继承而不是Control时它是自动的。