关键词:是几个不相同的MDI子窗体.就是假如有A,B,C子窗体分别由不同按钮控制,
假如当前父窗口里已经打开了A,可我接着打开B或C,怎样不让A和B同时显示在父窗口里啊?
我是新手,请附上示例行吗?
先谢谢各位了啊!!! 

解决方案 »

  1.   

    foreach (Form frm in this.Controls)
    // 先关闭子窗口,再打开新窗口
    {
        if (frm.GetType() == "System.Form")  frm.Close();
    }
    Form2 frm2= new Form2()
    ... 
      

  2.   


    foreach (Form frm in this.Controls)  // 先关闭子窗口
    {
        if (frm.GetType() == "System.Form")  frm.Close();
    }
    Form2 frm2= new Form2()              // 再打开新窗口
    frm.Show... 
      

  3.   

    更正1楼代码:foreach (Form frm in this.Controls) frm.Close();
    Form2 frm2 = new Form2()
    frm2.Show...
      

  4.   

    你是用的frm.show()还是frm,showdialog()啊?
      

  5.   


    foreach (Form frm in this.MdiChildren) frm.Close();
    Form2 frm2 = new Form2();
    frm2.Show();
      

  6.   

    你的代码我是这样用的:      private void toolStripMenuItem1_Click(object sender, EventArgs e)
          {//打开子窗体1
             foreach (Form  frm in this.Controls)
             {
                if (frm.GetType().ToString () == "System.Form")
                {
                   frm.Visible = false;
                }
             }
             Form1 frm1 = new Form1();
             frm1.Show();
          }
    可是运行不了,在Form  frm这里类型转换出错了:
    无法将类型为“System.Windows.Forms.MenuStrip”的对象强制转换为类型“System.Windows.Forms.Form”。
    这个又怎么办呢?改MenuStrip 吗?
      

  7.   

    哦,后边还加一句:
    frm1.MdiParent = this;
    但还是不行!
      

  8.   

    发现这样的代码还挺好用的.      private static Form1 frm1;
          private void toolStripMenuItem1_Click(object sender, EventArgs e)
          {//打开子窗体1
             if (frm1 == null || frm1.IsDisposed)
             {
                if (frm2 != null)
                {//判断有没有打开的其他子窗体.有的话就把它们给隐藏了.
                   frm2.Visible = false;
                }
                frm1 = new Form1();
                frm1.MdiParent = this;
                frm1.Show();
             }
             else
             {
                frm1.Activate();
             }
          }不过还是得跟各位说声3Q啊!