-1

首先:我是一个 Winform 新手……但我正在尝试 :)

我的客户想要这样的东西:

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

我的问题:
这可能吗?如果是这样:如何?

问候
Smoller - WinForm 新手

4

2 回答 2

3

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

为此,您最好使用两个非模态对话框,然后将第二个对话框放在 Z 顺序的更高位置,使其显示在第一个对话框的前面。

于 2012-12-18T10:13:24.310 回答
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);

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

拥有的表单也永远不会显示在其拥有者表单的后面。You can use owned forms for windows such as find and replace windows, which should not disappear when the owner form is selected.

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

于 2012-12-18T22:40:17.430 回答