0

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

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

只要我不选择基本窗口(它没有获得焦点),“不激活”窗口行为就合适了。But when the basic window is selected, the "no-activate" window can be focused... and gains it when the user clicked on it.

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

你有没有遇到过这个问题?我已阅读:Visual Studio 2010 中的 WPF – 第 3 部分:焦点和激活,但没有解决它。

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

谢谢 !

4

2 回答 2

0

尝试也给它 WS_EX_TOOLWINDOW。 http://www.daniweb.com/software-development/csharp/threads/273724/a-form-that-doesnt-steal-focus#

于 2012-11-05T23:09:01.657 回答
0

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

The Window already got the focus if it is directly selected, but it is not focused when a component of the window is selected.

只需添加:

Focusable = false; 

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

于 2012-11-06T16:12:31.453 回答