【问题标题】:How can I tell if my program is the one that's focused?如何判断我的程序是否是重点项目?
【发布时间】:2013-09-08 01:51:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net winforms focus


    【解决方案1】:

    我刚刚对其进行了测试,它的工作方式正是我想要的!我可以检查Form.ActiveForm 是否为空:如果为空,则它没有焦点;如果不为空,则有焦点!

    【讨论】:

      【解决方案2】:

      使用事件更简单的方法是使用事件。

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

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

      【讨论】:

      • 我已经尝试了this.Leavethis.LostFocus 事件,但是当我失去表单的焦点时它不会触发...当我使用@时它不起作用吗? 987654324@/Leave表单事件?
      • 您能否发布更多信息,除了焦点不工作。告诉我们您打算做什么。
      • 当我的表单失去/获得焦点时事件没有触发......它基本上什么也没做......谢天谢地,我找到了自己问题的答案!
      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      相关资源
      最近更新 更多