窗体没有得到适当的重点在C#

问题描述:

我写了一个小型窗体应用程序,它只包含文本框。我通过使用低级别键盘挂钩启用了快捷键,以便在需要时将焦点集中到应用程序。 所有工作正常,我第一次按下短键即(左控制键)+(左控制键)应用程序得到适当的控制(焦点)。 但是,当我停用并重做快捷键时,任务栏上的应用程序图标开始闪烁,表单不获得焦点,标题栏变灰。窗体没有得到适当的重点在C#

更多信息:

  1. 去激活形式的不透明度降低,但它仍然在上面,所以整个时间会显示在屏幕
  2. 这种形式是从另一个类激活的形式,内应用。
  3. 在窗体的激活事件不透明度增加,使得它现在过得很好可见

我用form.Activate焦点移到应用程序()我也曾尝试from.Visible,但没有运气。 激活仅适用于第一次,发布任务栏中的图标闪烁。

有没有任何想法为什么会发生这种情况?

+0

这很正常,你不能从另一个应用程序窃取焦点。你应该使用RegisterHotKey()而不是钩子。 – 2012-02-07 11:12:15

此答案同样适用于您: https://*.com/a/3789985/64121。您需要使用AttachThreadInput API函数,以便从另一个应用程序窃取焦点。

+0

感谢您指出的解决方案,但部分工作......现在激活工作没有问题,但问题是,有时我的应用程序采取了重点,它不会停止重复点击鼠标。只有当我点击我的应用程序然后点击其他应用程序时才解决这个问题。我在这里看到类似的问题,http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/546858a1-5122-478a-944d-8c6e8383b905/但我无法理解他的解决方案,他最终提供了。有人可以请帮忙。 – vikramaditya234 2012-02-10 12:04:52