有没有一种简单的方法来检测.NET应用程序何时获得或失去焦点?
答案 0 :(得分:7)
您要查找的内容为Form.Activated和Form.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事件。