WPF窗口焦点

时间:2010-08-24 23:33:40

标签: wpf focus

我有一个应用程序(比如App1)。它有一个包含数据项的数据网格。如果我右键单击数据项,则会显示“项目详细信息”窗口。但是,App1不会直接执行此操作。相反,它会与另一个应用程序(例如App2)进行通信,而App2实际上会显示“项目详细信息”窗口。我的问题如下: 1.启动App2,然后将其最小化到任务栏。 2.在App1上,右键单击数据项以显示“项目详细信息”窗口。 3.“项目详细信息”窗口出现在前面,但它没有焦点(标题栏为灰色)。 App1仍然是焦点。 4.如果我关闭“项目详细信息”窗口并再次重复步骤2,则此时“项目详细信息”窗口不仅会出现在前面,而且还会有焦点。 5.如果我再次执行步骤1,则会得到与步骤3中相同的结果。

我也注意到我在某些计算机上遇到此问题但在其他计算机上没有。

我尝试过各种方法来关注“项目细节”窗口但是失败了。 Focus()方法只返回false。

(事实上,首先“项目细节”窗口甚至不会出现在前面,但是当窗口初始化时我将“Topmost”设置为true,并在呈现内容后将其设置为false,迫使窗户向前。)

3 个答案:

答案 0 :(得分:0)

我想。为什么需要设置TopMost?相反,您应该将App2的所有者设置为App1。

HTH

答案 1 :(得分:0)

无法将App1设置为App2的所有者。它们是不相关的应用程序。 App1与App2通信的唯一方法是通过Windows消息。我试图将App2设置为“项目详细信息”窗口的所有者,但它没有解决问题。

答案 2 :(得分:0)

找到解决此问题的方法。 App1必须调用AllowSetForegroundWindow(...)以启用App2来设置前景窗口。请参阅AllowSetForegroundWindow上的MSDN文档。