【问题标题】:App not getting keyboard focus when entering from other app从其他应用程序进入时应用程序没有获得键盘焦点
【发布时间】:2020-06-11 21:17:19
【问题描述】:

在 WPF 中,我有一个 Window_KeyDown 事件,当用户按下 shift 时,它会改变鼠标光标的形状。它按预期工作,除非我点击了另一个应用程序。所以我添加了一个这样的 Window_MouseEnter 事件来在鼠标重新进入我的应用程序时获取键盘焦点:

private void Window_MouseEnter(object sender, MouseEventArgs e)
        {
            IInputElement b = Keyboard.Focus(this);
            this.Focus();
            Debug.WriteLine(b + DateTime.Now.ToLongTimeString());
        }

当鼠标进入应用程序时,我可以看到 MouseEnter 事件触发(使用调试行),但我的应用程序在我单击应用程序之前仍然没有收到键盘事件。

这很烦人,因为当鼠标进入我的应用程序中的控件时,鼠标光标会正确更改,所以人们会期望事情能正常工作,但 shift-mouse 功能在单击后才会起作用。

我错过了什么?

【问题讨论】:

    标签: c# wpf keyboard focus


    【解决方案1】:

    我发现秘诀是 Activate() 方法。我把它放在 MouseEnter 函数中,它的副作用是强制整个应用程序显示其中一些是否被其他应用程序隐藏。

    使用 Activate(),不需要 Focus() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 2018-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2015-07-20
      相关资源
      最近更新 更多