Windows 7上的WPF应用程序仅在按下CTRL键后才会正常响应

时间:2013-11-12 10:05:49

标签: c# wpf windows

我正在使用Windows 8开发一个WPF应用程序作为.NET 4.5的开发人员机器。我也使用了一些DevExpress控件。

在开发人员计算机上,应用程序的UI响应正常。

当我在Windows 7上测试应用程序时,无论是使用虚拟机还是其他PC​​,都显示了UI,但它没有正常响应。例如,我有一个DevExpress网格控件,当我点击一行时,行没有突出显示为选中,当鼠标悬停按钮和菜单时,也没有任何反应。

当我按下CTRL键时,魔法开始了! 之后,WPF应用程序正常响应,就像在Windows 8上一样。

我想当我按下那个键时,会发生与Focus有关的事情。 此外,当窗口调整大小时,网格上的更改会出现,但在它再次'冻结'之后。只有按下CTRL,问题才会消失。

为什么会发生这种情况?

非常感谢

1 个答案:

答案 0 :(得分:0)

这是从WinForms应用程序创建WPF窗口时的标准行为。幸运的是,Interop软件包还包括一种解决这种奇怪问题的方法:ElementHost.EnableModelessKeyboardInterop。在创建WPF窗口之后,但在调用其Show方法之前,请执行以下操作:

public static void SetOwnerAndMakeTheKeyboardWork(this Window window, IntPtr ownerHandle)
{
    if (ownerHandle != IntPtr.Zero)
        new WindowInteropHelper(window).Owner = ownerHandle;
    ElementHost.EnableModelessKeyboardInterop(window);
}