我想了解下面的代码在WinForms应用程序中的行为。
我有两种形式 - Form1和Form2。当我从Form2中关闭Form1时,即使Form2也被关闭。我已确保它们都将Owner属性设置为null。Winforms中关闭一个不相关的.NET窗体内的另一种形式
任何人都可以解释为什么Form2会从下面的代码中关闭吗?
Form1中:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
窗体2:
public partial class Form2 : Form
{
Form1 f1;
public Form2(Form1 f1)
{
InitializeComponent();
this.f1 = f1;
}
private void button1_Click(object sender, EventArgs e)
{
f1.Close();
}
}
的Program.cs
static void Main()
{
Form1 f1 = new Form1();
f1.Size = new Size(0, 0);
f1.Show();
Form2 f2 = new Form2(f1);
f2.ShowDialog();
Application.Run(new MainForm());
}
当Form2上的按钮被点击这两个Form 1和Form关闭掉。我也确保该按钮不是Form2的okbutton或cancelbutton。谁能解释为什么会发生这种情况?
MainForm()是什么意思?删除行_f1.Show(); _并替换Application.Run(f1); –
MainForm是一个无关的表单,以标准方式启动应用程序。我感兴趣的是在调用Application.Run()之前为什么这两个表单行为如此。如果Form2在Application.Run()中调用,那么行为是按照我们的期望 – Rhino
然后,将这些窗体显示代码移动到MainForm_Load –