首先:我是一个 Winform 新手……但我正在尝试 :)
我的客户想要这样的东西:
简单场景:
1)从我的主窗体打开一个非模式对话框(用于阅读和记笔记)。
2)从我的主窗体打开一个模式对话框。
3) 新的模态对话框不能阻止非模态对话框获得焦点。
我的问题:
这可能吗?如果是这样:如何?
问候
Smoller - WinForm 新手
不,这是不可能的。模态对话框将在主 UI 线程上调用,并将阻塞线程直到它关闭。
为此,您最好使用两个非模态对话框,然后将第二个对话框放在 Z 顺序的更高位置,使其显示在第一个对话框的前面。
您描述它的方式并不完全可能,但您可以使用表单的 Owner 属性来接近您想要的行为。
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.owner.aspx
从您的主表单中,您希望通过设置 Ower 属性来生成新表单,如下所示:
var form = new MyForm();
form.Owner = this; // assuming this is your main form
form.Show();
或者您可以简单地将所有者作为参数传递给 Show 方法:
var form = new MyForm();
form.Show(this);
这可能会有所帮助的原因是因为设置 Owner 提供了以下行为(来自文档)。
拥有的表单也永远不会显示在其拥有者表单的后面。You can use owned forms for windows such as find and replace windows, which should not disappear when the owner form is selected.
但是与模态对话框不同,您的主窗口可以有多个子窗体。