【问题标题】:How to switch focus between my WPF application and the second window如何在我的 WPF 应用程序和第二个窗口之间切换焦点
【发布时间】:2020-09-15 00:21:01
【问题描述】:

我有一个用于某些元素捕获目的的 WPF 应用程序。因此,在应用程序之间切换焦点非常重要。该应用程序的工作方式是,每当我执行 Ctrl KeyDown 时,焦点元素都会捕获并显示在我的 WPF 窗口中。现在的问题是,如果我单击 WPF 应用程序,除非我单击另一个窗口,否则焦点不会切换到任何其他窗口。实际上,每当我将鼠标光标从窗口移动时,我都需要关注 WPF 窗口后面的下一个窗口。我怎样才能实现这个特定的场景。

我知道我们可以使用 user32 来切换焦点,但是当我将光标从我的 WPF 应用程序(当前它具有焦点)移动时,我将如何找到下一个窗口或第二个窗口并切换焦点。

【问题讨论】:

    标签: c# wpf-controls user32


    【解决方案1】:

    如果您真的希望应用程序的窗口获得焦点,当用户将鼠标移到应用程序的窗口上时,您可以通过在应用程序的每个窗口上设置 MouseEnter 事件的处理程序来实现,即当鼠标移到它上面时,你想获得焦点:

      public YourWindow() : base()
      {
    
         // Other constructor code
    
         this.MouseEnter += this.windowMouseEnter;
      }
    
      private void windowMouseEnter(object sender, MouseEventArgs e)
      {
         if (!e.Handled) this.Focus();
      }
    

    【讨论】:

    • 不完全一样,但是每当我从 WPF 应用程序中移动光标时,我需要将窗口聚焦在我的应用程序后面。例如,如果 chrome 浏览器就在我的窗口后面,则在鼠标移动时,我必须聚焦 chrome 窗口(页面完全打开)
    • 所以你的愿望不是在你的应用程序的窗口上,而是来自其他应用程序的窗口。是的,那是另一回事......
    猜你喜欢
    • 2019-04-07
    • 2018-03-30
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    相关资源
    最近更新 更多