【问题标题】:WPF application with several windows including a non active: focus issue具有多个窗口的 WPF 应用程序,包括非活动:焦点问题
【发布时间】:2012-10-25 20:08:57
【问题描述】:

我有一个 .Net 4 应用程序,在 WPF 4 中有两个窗口:

  • 使用 WS_EX_NOACTIVATE 样式来防止获得焦点。
  • 另一个是基本窗口。

只要我不选择基本窗口(它没有获得焦点),“不激活”窗口行为就合适了。但选择基本窗口时,“无激活”窗口可以聚焦......并在用户点击它时获得它。

就好像 WPF 认为同一应用程序的两个窗口有权提供焦点,即使它们不应该这样做。 如果两个窗口都是 WS_EX_NOACTIVATE,则不会发生此行为。

你有没有遇到过这个问题? 我读过这个:WPF in Visual Studio 2010 – Part 3 : Focus and Activation,但没有解决。

编辑:我已经能够通过使用 Popup 作为我的非活动窗口的基类来解决问题。但是,我不想有弹出窗口。为什么 !?弹出窗口从未获得焦点:有人知道为什么/如何?如何将此行为重现到 Window ? 我尝试进入 Popup / Window 代码,但不是很清楚!

谢谢!

【问题讨论】:

  • 您不想让窗口变为活动状态??那为什么要创建窗口,如果只是为了做一些代码,您还可以添加代码文件或类..还有 .hide 和 .show 和 .activate 作为表单操作。
  • 需要窗口。这是一个永远不需要获得焦点的 OSK。本项目开源:Civikey WebsiteCivikey on GitHub.

标签: c# .net wpf input focus


【解决方案1】:

【讨论】:

  • 感谢您的回答。它没有任何改变......窗口仍然获得焦点。
【解决方案2】:

好的。我部分解决了这个问题。

如果直接选择窗口已焦点,但在选择窗口的组件时,它不会聚焦。

只需添加:

Focusable = false; 

到 Window 中包含的任何 WPF 控件,即使先前的焦点是同一应用程序的 Window,它们也永远不会被聚焦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2018-07-17
    • 2022-09-27
    相关资源
    最近更新 更多