我想了解下面的代碼在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 –