应用程序失败并获得关注的.NET事件

时间:2009-05-26 15:17:57

标签: .net winforms focus

有没有一种简单的方法来检测.NET应用程序何时获得或失去焦点?

6 个答案:

答案 0 :(得分:7)

您要查找的内容为Form.ActivatedForm.Deactivated

答案 1 :(得分:2)

我很好奇这种技术在MDI应用程序中的各种条件下如何工作。事实证明,这不适用于所有情况。

如果您的应用程序是MDI应用程序,那么当MDI表单中的非模态表单在应用程序本身失去/重新获得焦点时具有焦点时,主MDI表单将失去/获得焦点(如其他答案中所述)。但是,如果打开模态对话框(对应用程序本身是模态的),则主MDI表单不会松散/获得焦点(至少激活/取消激活的事件似乎不会触发)。换句话说,如果您处理的只是MDI表单的激活/停用事件,那么当模式表单具有焦点时,您可能会错过应用程序失去/获得焦点。

因此,为了实现这一点,您需要同时处理MDI表单的激活/停用事件以及以模态方式打开的任何表单上的事件(通过ShowDialog)。

答案 2 :(得分:1)

使用:

this.LostFocus

this.GotFocus

在最父母的表格/窗口

答案 3 :(得分:0)

对于WPF,窗口上的 FocusChanged 。 Winforms中应该有类似的事件。您可以在Visual Studio上找到使用intellisense。

激活/取消激活似乎是标准的。

答案 4 :(得分:0)

在winforms中Activated

答案 5 :(得分:0)

处理主窗口的Control.GotFocus和Control.LostFocus事件。