如何判断我的程序是否专注于那个程序?

时间:2013-09-08 01:51:18

标签: c# .net winforms focus

我找不到合适的答案......

我具体要问的是,如何确定我的程序(winforms)是否对用户可见,并且它是专注的?例如,当您使用Skype时,它可以判断它是否是焦点和可见的。如果您收到Skype IM并且该程序不可见(隐藏在其他窗口后面)/最小化它将使通知发出声音。如果Skype知道它是具有焦点的那个,最顶层的应用程序,它就不会费心去做通知,因为它假设你正在使用它。

现在,我尝试了if (this.Focused == true),但它似乎根本不起作用。它无法说明我将重点放在Windows资源管理器上,并且我自己的程序位于它的后面,而不是专注于顶部的灰色。

2 个答案:

答案 0 :(得分:3)

我刚试过它,它的工作原理就是我想要的!我可以检查Form.ActiveForm是否为空:如果它为空,则它没有焦点;如果它不是空的,它有焦点!

答案 1 :(得分:1)

通过使用事件,您可以更轻松地完成所需操作。

以下是关于https://stackoverflow.com/a/1786376/2692994

的优秀文章

在活动中,您可以放置​​任何想要对表单执行的操作。 ^ 我添加了上述内容,因为这可能是Skype使用的内容。如果你想在任何时候检查它是否集中注意力,那么只需做一个公共bool focus = true;"并将其设置在事件内部为真或假。