2012-03-19 66 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

相关问题