我找不到合适的答案......
我具体要问的是,如何确定我的程序(winforms)是否对用户可见,并且它是专注的?例如,当您使用Skype时,它可以判断它是否是焦点和可见的。如果您收到Skype IM并且该程序不可见(隐藏在其他窗口后面)/最小化它将使通知发出声音。如果Skype知道它是具有焦点的那个,最顶层的应用程序,它就不会费心去做通知,因为它假设你正在使用它。
现在,我尝试了if (this.Focused == true)
,但它似乎根本不起作用。它无法说明我将重点放在Windows资源管理器上,并且我自己的程序位于它的后面,而不是专注于顶部的灰色。
答案 0 :(得分:3)
我刚试过它,它的工作原理就是我想要的!我可以检查Form.ActiveForm
是否为空:如果它为空,则它没有焦点;如果它不是空的,它有焦点!
答案 1 :(得分:1)
通过使用事件,您可以更轻松地完成所需操作。
以下是关于https://stackoverflow.com/a/1786376/2692994
的优秀文章在活动中,您可以放置任何想要对表单执行的操作。 ^ 我添加了上述内容,因为这可能是Skype使用的内容。如果你想在任何时候检查它是否集中注意力,那么只需做一个公共bool focus = true;"并将其设置在事件内部为真或假。