2013-01-23 56 views
0

我有2個表格。在第1形式的初始化我有代碼:2表格關閉和打開

public App_Index() 
     { 
      InitializeComponent(); 

      this.Hide(); 

      Authorization loginForm = new Authorization(); 
      loginForm.ShowDialog(); 
     } 

如果我推關閉按鈕[X]在Form2 - App_Index(Form1的)形式做.Show();但Form2中沒有關於此的代碼。如果我在Form2上按[X],我想關閉Form1和Form2。我怎樣才能做到這一點?

+0

您是否在尋找退出整個程序,或只是接近2按下關閉按鈕? – Robert

+0

當表格2關閉時您是否正在關閉表格1? – Neo

+0

嘗試Application.Exit();在閉幕式上 – Pandian

回答

2

這個怎麼樣?如果取消對話框,則會關閉當前窗體。

public App_Index() 
{ 
    InitializeComponent(); 

    this.Hide(); 

    Authorization loginForm = new Authorization(); 
    if (loginForm.ShowDialog() == DialogResult.Cancel) 
     Close(); 
} 
0

你可以處理FormClosing事件:

private void Authorization_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
     Application.Exit(); 
    } 
} 
0

有幾種不同的方法來做到這一點。您可以使用通過Application.OpenForms的循環並關閉您想要的表格。我會做這樣的Form_Closing事件的Form2:

private void Form2_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     foreach(Form frm in Application.OpenForms) 
     { 
      if(f.Name == "Form1") 
       f.Close(); 
     } 
    } 

您也可以直接訪問OpenForms集合中的窗體並將其關閉:

Application.OpenForms["Form1"].Close()