2012-03-19 64 views
2

我在c#中有一個多窗口窗體應用程序(frmMian,frmSteg和frmCrypt)。從主窗體(frmMain)中,我可以調用其他(兩個)窗體。如何使用與VB中使用的窗體關閉事件相似的窗體關閉事件,在我退出這兩種窗體時返回主窗體?窗體關閉事件在多個窗口窗體應用程序使用可視c#

FrmSteg frmstego = new FrmSteg(); 
    FrmCrypto frmcrypt = new FrmCrypto(); 

    private void btnsteg_Click(object sender, EventArgs e) 
    { 

     frmstego.Show(); 
     this.Hide() ; 
    } 

    private void btncrypto_Click(object sender, EventArgs e) 
    { 

     frmcrypt.Show(); 
     this.Hide(); 
    } 

回答

1

在子窗口上使用Form.Closed事件。

frmstego.Closed += (s, e) => { 
    this.Show(); 
}; 

frmcrypt.Closed += (s, e) => { 
    this.Show(); 
}; 
+0

代碼給出了這樣的錯誤:命名爲「E」的局部變量不能在此範圍內聲明,因爲它會給予不同的意義,「E」,這已經是一個「父母或電流」範圍用於表示別的東西。任何想法爲什麼 – suleimankurawa 2012-03-20 23:37:28

+0

@suleimankurawa,是的,可能是因爲你已經將代碼粘貼到另一個聲明變量「e」的方法中。如果是這樣的話,只需將'e'改爲'e2'或其他任何方法即可。 – 2012-03-22 18:52:58

0

嘗試在這樣的主窗體上放置一個Singleton訪問器。然後在主窗體集合_instance = this的構造函數中。

private static <MainFormType> _instance; 

public static <MainFormType> Instance 
{ 
    get 
    { 
     return _instance; 
    } 
} 
+1

*不寒而慄*爲什麼...? – 2012-03-19 23:57:57

+0

@ErikDietrich主要是因爲隨着應用程序的增長,您無法確保在關閉先前的窗體時主窗體將成爲選定的窗體。另一種選擇是確保主表單是其他表單的父表單,但沒有表明他正在這樣做。 – 2012-03-19 23:59:07

+0

@ mperrenoud03我真的不明白你的解釋 – suleimankurawa 2012-03-20 23:41:15

相關問題