【问题标题】:WPF window focusWPF 窗口焦点
【发布时间】:2010-08-24 23:33:40
【问题描述】:

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

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

我尝试了各种方法来获得“项目详细信息”窗口的焦点,但都失败了。 Focus() 方法只返回 false。

(其实一开始“Item Details”窗口甚至不会出现在最前面,但是我在窗口初始化时将“Topmost”设置为true,并在呈现内容后将其设置为false,这将窗口强制到前面。)

【问题讨论】:

    标签: wpf focus


    【解决方案1】:

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

    HTH

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        找到解决此问题的方法。 App1 必须调用 AllowSetForegroundWindow(...) 才能使 App2 设置前景窗口。请参阅有关 AllowSetForegroundWindow 的 MSDN 文档。

        【讨论】:

          猜你喜欢
          • 2011-09-17
          • 2012-09-17
          • 2011-03-10
          • 2011-06-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多