表单在c#中没有得到正确的焦点

本文关键字:焦点 表单 | 更新日期: 2023-09-27 18:23:49

我编写了一个小表单应用程序,它只包含文本框。我启用了快捷键,使用低级键盘挂钩,在需要时将焦点放在应用程序上。一切正常,我按下短键,即(左控制键)+(左控制按键),这是应用程序第一次获得正确的控制(焦点)。但是,当我停用并重做快捷键时,任务栏上的应用程序图标开始闪烁,表单无法聚焦,标题栏将变灰。

更多信息:

  1. 停用时,窗体的不透明度会降低,但仍保持在顶部,因此窗体始终显示在屏幕上
  2. 此表单是从应用程序中的另一个类激活的
  3. 激活事件时,表单的不透明度增加,因此现在非常清晰可见

我使用form.Activate()来关注应用程序,我也尝试过。看得见,却没有运气。激活仅在第一次工作时,任务栏中的图标会闪烁。

有人知道为什么会发生这种事吗?

表单在c#中没有得到正确的焦点

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