Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 现在显示WinForms应用程序中的WPF窗口_.net_Wpf_Winforms_Window_Winforms Interop - Fatal编程技术网

.net 现在显示WinForms应用程序中的WPF窗口

.net 现在显示WinForms应用程序中的WPF窗口,.net,wpf,winforms,window,winforms-interop,.net,Wpf,Winforms,Window,Winforms Interop,我正在开发一个WinForms应用程序。我单击按钮以显示WPF窗口,执行以下代码: void button1_Click(object sender, EventArgs e) { Window window = new Window(); ElementHost.EnableModelessKeyboardInterop(window); window.Show(); } 当我第一次启动窗口时,窗口会出现。 然后,如果我关闭窗口并尝试再次显示,则窗口不会出现。 作为提

我正在开发一个WinForms应用程序。我单击按钮以显示WPF窗口,执行以下代码:

void button1_Click(object sender, EventArgs e)
{
    Window window = new Window();
    ElementHost.EnableModelessKeyboardInterop(window);
    window.Show();
}
当我第一次启动窗口时,窗口会出现。 然后,如果我关闭窗口并尝试再次显示,则窗口不会出现。 作为提示,在玩代码时,我发现如果我创建两次WPF窗口,窗口总是显示出来


因此,它让我想到了调度程序的问题,或者在窗口构造函数中执行的操作。

您的代码片段不会重新处理该问题。WPF需要dispatcher循环,没有它,很多东西都无法正常工作。您必须使用ShowDialog。@HansPassant:是的,这个问题不会在干净的应用程序中重现。似乎在我的实际应用程序中,我遇到了一些多线程交互。不管怎样,我看到了同样的行为。
void button1_Click(object sender, EventArgs e)
{
    Window window = new Window();
    window = new Window(); // creating the window twice WORKS!!
    ElementHost.EnableModelessKeyboardInterop(window);
    window.Show();
}