打开模态和非模态

时间:2012-12-18 10:10:05

标签: c# winforms dialog

首先关闭:我是一个完整的Winform新手......但我正在尝试:)

我的客户想要这样的事情:

简单场景:
1)从我的Main-form打开一个非模态对话框(用于阅读和记笔记) 2)从我的Main-form打开一个模态对话框 3)新的模态对话框不得阻止非模态对话框获得焦点。

我的问题:
这可能吗?如果是这样的话:怎么样?

问候
Smoller - WinForm新手

2 个答案:

答案 0 :(得分:3)

不,不可能。模式对话框将在主UI线程上调用,并将阻塞线程直到它被关闭。

你最好使用两个非模态对话框,然后将第二个放在Z顺序的上方,以便它显示在第一个前面。

答案 1 :(得分:1)

您描述它的方式不太可能,但您可以使用表单的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);

这可能有用的原因是因为设置所有者提供了以下行为(来自文档)。

  

自有表单也不会在其所有者表单后面显示。您可以使用窗口的自有窗体,例如查找和替换窗口,当选择所有者窗体时,窗口不应该消失。

但是,与模态对话框不同,您可以拥有多个主窗口的子窗体。