winform,MDI窗口中,有2个子窗口,form1,form2,当我打开form1后,再打开form2,如何让未关闭的form1自动关闭,也就是我的MDI窗口中,始终只存在一个最新打开的子窗口,其他的窗口都关闭。请问代码应该怎么写啊!

解决方案 »

  1.   


    foreach (Form frm in this.MdiChildren)//循环每个窗体
                {
                    if (!frm.Name.Equals("PE_TotalSearch"))//窗体名字不是PE_TotalSearch的全部关闭
                    {
                        frm.Close();
                    }
                }
      

  2.   

      form1中      public delegate void form1close();//委托
      form2中       定义一个全局private form1.form1close forme1close;
                   重写构造函数public form2(form1.form1close _forme1close)
                   {
                     forme1close=_forme1close;
                     InitializeComponent();
                      }
    form1中这样传递  Form2 from2=new Form2(new form1close(closethis))
                   closethis为你的关闭form1窗体函数
                     private void closethis()
                   {this.close();} 
      

  3.   

    private void btLogin_Click(object sender, EventArgs e)
            {
                if (BLUI.checkLogin(UI))
                {
                    this.Hide();
                    MainFrm frm = new MainFrm();
                    frm.Show();
                }
                else
                {
                    MessageBox.Show("登录失败!");
                    txtName.Focus();
                    txtName.SelectAll();
                }
            }
      

  4.   

    打开之前执行一行。
    foreach (Form childForm in this.MdiChildren) childForm.Close();