2010-08-24 190 views
0

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

我还注意到我在某些计算机上遇到了这个问题,但在其他计算机上却没有。

我已经尝试了各种方法,以获得“项目详细信息”窗口的重点,但失败。 Focus()方法返回false。 (事实上​​,首先“Item Details”窗口甚至不会出现在前面,但是当窗口初始化时我将“Topmost”设置为true,并在内容呈现后将其设置为false,这迫使窗户到前面。)

回答

0

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

HTH

0

无法将App1设置为App2的所有者。他们是不相关的应用程序。 App1可以与App2进行通信的唯一方式是通过Windows消息。我试图将App2设置为“Item Details”窗口的所有者,但它没有解决问题。

0

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