我正在尝试执行以下线程中描述的相同操作(在C#winforms应用程序中):
How to open a new independent form?
并回答:https://stackoverflow.com/a/14902079/5342320
问题是我无法在Visual Studio Community 2015中找到此设置。
我找到的唯一Microsoft文档如下:
https://msdn.microsoft.com/en-us/library/vstudio/0hzfysdc(v=vs.100).aspx
所以看来这只存在于VB项目中。我在创建VB winforms项目时找到了该设置。有没有办法在C#项目中做类似的事情?
作为一种解决方法,我使用了模态形式:
frmMyForm frm = new frmMyForm();
frm.ShowDialog();
但这使得我无法在新表单关闭之前关闭父表单。我想要的是能够在打开新表单后关闭父表单,而不关闭整个应用程序。
答案 0 :(得分:-1)
默认情况下,您的Main
方法包含以下行
Application.Run(new YourMainForm());
只需将其更改为
即可new YourMainForm().Show();
Application.Run();
编辑:事实证明它并非如此简单,因为现在应用程序永远不会退出。但这个想法是一样的。虽然似乎有类似的回答问题,但我不喜欢这个答案,宁愿把这个课放在我的口袋里(图书馆)
public class LastFormClosingApplicationContext : ApplicationContext
{
public LastFormClosingApplicationContext(Form mainForm) : base(mainForm) { }
protected override void OnMainFormClosed(object sender, EventArgs e)
{
for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
{
var form = Application.OpenForms[i];
if (form != MainForm)
{
MainForm = form;
return;
}
}
base.OnMainFormClosed(sender, e);
}
}
任何时候我需要这样的东西,只需要替换
Application.Run(new YourMainForm());
与
Application.Run(new LastFormClosingApplicationContext(new YourMainForm()));