如何在C#中正确实现多窗口应用程序?

时间:2014-06-11 14:00:21

标签: c# winforms

我有一个C#Winforms应用程序,它支持多个窗口,类似于浏览器。

目前,当用户启动新窗口时,我只需找到进程名称并再次启动该进程。这看起来有点像黑客,它带来了新窗口必须进行大量冗余应用程序初始化工作的额外问题。

我试过了:

var form = new MainForm();
form.Show()

但是这有一个隐藏的警告,即关闭主窗口(看起来像任何其他窗口)会导致关闭所有窗口。

如何让我的程序像浏览器一样,每个窗口都是独立的,但我们不是每次都启动一个新进程?

(注意:我认为Chrome是个例外,它会为每个窗口启动一个新进程!)

2 个答案:

答案 0 :(得分:1)

要打开一个新窗口:

Thread thread = new Thread(() => Application.Run(new MainForm()))
{
    IsBackground = false
};

thread.Start();

显然,这意味着如果您从多个线程访问共享状态,则需要正确同步该访问。

答案 1 :(得分:0)

您可以使用MDI容器来支持多个窗口。您的MainForm将包含所有其他表单。其他形式可以独立工作。

将主窗体,MDI容器属性设置为true。创建新表单时,请将mdi parent设置为主表单。