【问题标题】:How to give a text box focus from a Windows HotKey event如何从 Windows 热键事件中获得文本框焦点
【发布时间】:2015-08-03 01:40:56
【问题描述】:

我有一个窗口很小的 WPF 应用程序。它位于桌面上,但非常小。我已经通过RegisterHotKey Win32 API 设置了 AltGr+A 或 Ctrl+Alt+A 的热键。

我遇到的问题是,当我在另一个程序中并使用我的快捷方式时,热键有效,我的窗口通过 winProc 活跃起来,我在窗口焦点上给出了一个文本框,我也使用 Keybord.Focus(textBox)

我的意图是用户可以立即开始输入。不幸的是,除非我真的非常快地放开组合键,否则窗口/文本框会失去焦点。

我试图阻止文本框失去焦点,但这并不能阻止我的窗口或整个应用失去焦点,这就是正在发生的事情。

我应该怎么做?

【问题讨论】:

  • 我们可以看看你的代码吗?
  • 卸载夺回焦点的程序。
  • 哪个代码?热键有效。 Winproc 获取热键消息。设置焦点,keyboard.focus 也可以。实际上我认为问题是,我的应用程序在按键按下时收到消息,但当前前面的应用程序重新关注按键按下事件。

标签: c# wpf vb.net


【解决方案1】:

我发现这取决于当前正在运行且具有焦点/处于活动状态的其他程序。实际上,当按下热键时,我的应用程序正试图窃取焦点,这并不是真正想要的。我发现微软自己的办公程序真的很讨厌焦点被盗。

我的解决方案是使用 Win32 API 将我的应用设置为活动应用。但正如我所说,这并不总是有效。这方面有很多文章,但这里是one on the topic.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多