WPF窗口拥有的Modal WinForms进度栏

时间:2018-08-16 12:31:48

标签: c# wpf

我想在WPF窗口(父级)的顶部显示一个模式WinForms进度栏(子级)。通过将child的Owner属性设置为parent来实现模态,除了child.Owner必须为Form类型(当parent的类型为WPF Window时,进度条可以在没有模态的情况下正常工作)。由于parent是Window类型,而不是Form类型,因此我尝试直接使用win32库来实现模态。这是我所做的。

在Forms.cs中查看属性Owner的setter的源代码,我看到它调用了

SetWindowLong(child.Handle, -8, parent.Handle);

此调用似乎禁用了与父级的交互,这正是我想要的。当我希望当parent是WPF窗口时可以工作时,我先将parent作为Forms窗口进行了测试。我注意到两个奇怪的地方:

  1. 在子级上设置DialogResult不再关闭/隐藏子级。我必须手动调用Hide()。为什么?

  2. 在调用Hide()之后,parent仍然被完全禁用,即我无法单击任何按钮,无法移动窗口或对其进行任何其他操作。它完全冻结了。我认为我必须以某种方式撤消SetWindowLong父/子关系,但是我不知道该怎么做。

有人可以帮忙吗?

谢谢

0 个答案:

没有答案