1

我找不到一个好的答案...

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

现在,我试过if (this.Focused == true)了,但它似乎根本不起作用。它不能说我将焦点放在 Windows 资源管理器上,而我自己的程序在它的后面,而不是集中在顶部并变灰。

4

2 回答 2

3

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

于 2013-09-08T02:29:18.787 回答
1

做你想做的事的一种更简单的方法是使用事件。

这是一篇关于https://stackoverflow.com/a/1786376/2692994的精彩帖子

在事件中,您可以对表单进行任何操作。^ 我添加了上述内容,因为这可能是 Skype 使用的。如果您想随时检查它是否集中,只需设置“public boolfocused = true;” 并将其在事件内部设置为 true 或 false。

于 2013-09-08T01:53:57.763 回答