1

早就想知道的一件事:

在 WinForms 应用程序中,您通常有一个带有 Undo 和 Redo 等条目的编辑菜单。必须启用或禁用这些菜单项,具体取决于哪个控件具有焦点以及它的撤消堆栈状态是什么。对于此验证,您必须知道焦点何时更改。不幸的是,似乎没有办法在标准的 C# WinForms 应用程序中实现这一点。到目前为止,我所做的是为每个控件添加一个 OnEnter 事件处理程序,但是这很讨厌,并且不适用于由后端代码添加的控件(例如在 C++/CLI 层中)。另一种方法是使用消息过滤器,但不会通过这样的过滤器发送 WM_FOCUS。覆盖 ActiveControl 也不起作用,因为它不是虚拟的。那么,还可以做些什么来验证每次焦点更改时的菜单项呢?

注意:我已经阅读了http://msdn.microsoft.com/en-us/magazine/cc188928.aspx上的文章,但是对于这样一个简单的任务,这种方法太复杂了。我已经有了所有的验证码。我只需要在焦点转到新控件时触发它。

4

0 回答 0