我有一个C#Winforms应用程序,它支持多个窗口,类似于浏览器。
目前,当用户启动新窗口时,我只需找到进程名称并再次启动该进程。这看起来有点像黑客,它带来了新窗口必须进行大量冗余应用程序初始化工作的额外问题。
我试过了:
var form = new MainForm();
form.Show()
但是这有一个隐藏的警告,即关闭主窗口(看起来像任何其他窗口)会导致关闭所有窗口。
如何让我的程序像浏览器一样,每个窗口都是独立的,但我们不是每次都启动一个新进程?
(注意:我认为Chrome是个例外,它会为每个窗口启动一个新进程!)
答案 0 :(得分:1)
要打开一个新窗口:
Thread thread = new Thread(() => Application.Run(new MainForm()))
{
IsBackground = false
};
thread.Start();
显然,这意味着如果您从多个线程访问共享状态,则需要正确同步该访问。
答案 1 :(得分:0)
您可以使用MDI容器来支持多个窗口。您的MainForm将包含所有其他表单。其他形式可以独立工作。
将主窗体,MDI容器属性设置为true。创建新表单时,请将mdi parent设置为主表单。