1

我有一个 WPF 应用程序,只要鼠标光标移到它上面,我就想成为当前的焦点窗口。目前我有一个 onMouseEnter 事件,当鼠标移到它上面时会改变光标,所以我知道系统正在识别,但是我真正想要的是让应用程序本身成为焦点,就好像用户左键单击它一样 - 所以我然后可以执行其他操作。目前,如果我移过它,光标会发生变化,但如果另一个应用程序,例如 - 记事本有焦点,焦点将在之后返回。

在 onMouseEnter 处理程序中,我尝试了“this.Focus()”和“this.Activate()”,但它们都没有达到与单击应用程序相同的结果。

有任何想法吗?

4

3 回答 3

1

带有附加到 Grid 控件的 MouseEnter 事件的 WPF C# 示例。如果另一个应用程序窗口具有焦点,它将删除它并将焦点附加到主窗口,就好像用户左键单击它一样。

    private void GrdContent_MouseEnter(object sender, MouseEventArgs e)
    {
        Application.Current.MainWindow.Activate();
    }
于 2017-12-31T10:29:17.983 回答
0

编辑:发布的答案不适用于 WPF。对不起。

尝试查看这个而不是 WPF:http: //blogs.msdn.com/nickkramer/archive/2006/03/18/554235.aspx

于 2009-05-21T00:22:41.597 回答
0

在 WPF 中,只需将此行添加到 MainWindow 构造函数即可获得预期结果。

MouseEnter += (s, e) => Activate();

这个原始的单行答案只有在您不与任何其他窗口交互时才有效。即使在这种情况下,以下内容也可以使用,但您将需要 Nuget 包“AutoItX.Dotnet”。

private IntPtr myHandle;
public MainWindow() {
  myHandle =  new System.Windows.Interop.WindowInteropHelper(this).Handle;
  MouseEnter += (s, e) => {
    Activate();
    if (AutoIt.AutoItX.WinActive(myHandle) == 0)
      AutoIt.AutoItX.WinActivate(myHandle);
    };
于 2019-01-10T06:06:25.400 回答