我做一菜单,打开一窗口,当我再次单击该菜单时,只将打开的窗口值前,而不需要再开一个窗口还可以单击其他菜单,打开不同的窗口给个提示的代码嘛!!!

解决方案 »

  1.   

    public bool check_window(String windows_name)
    {
    foreach(Form mdifrm in this.MdiChildren)
    {
    if(windows_name==mdifrm.Text)
    {
    mdifrm.Activate();
    return true;
    }
    }
    return false;
    }
      

  2.   

    点击菜单项时判断一下是否有新窗体的实例就行了,这是我以前写的一个记事本里的几行代码,做下参考
    private void menuGotoLine_Click(object sender, EventArgs e)
    {
       if (frmG == null || frmG.IsDisposed)
       {
           frmG = new frmGotoLine(rtxtBox);
           frmG.Show();
       }
    }
      

  3.   

    只是思路,不保证代码能够顺利运行bool a=true;
    private void button1_click()
    {
    if a()//判断是否已经打开窗体
    {
    form2 frm=new form2()
    frm.show();
    }
    else
    {
    form2.BringToFront ()//将控件置前
    }
    }
      

  4.   

    frmG  会提示该东东不认识;if a()//判断是否已经打开窗体
    关键就是怎样判断呢?谢谢!!!急!
      

  5.   

    frmG  会提示该东东不认识;if a()//判断是否已经打开窗体
    关键就是怎样判断呢?谢谢!!!急!
      

  6.   

    frmG  会提示该东东不认识;
    -------------------------------------------........................
    那只是给你个例子作参考的
    楼主新建的窗体叫什么,Form2?那就以Form2为例吧        Form2 frmF = null;
            private void menuFindToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (frmF == null || frmF.IsDisposed)
                {
                    frmF = new Form2();
                    frmF.Show();
                }
                else
                {
                    frmF.BringToFront();
                }
            }如果这样楼主都说有问题,我也无语了
      

  7.   

    假设需要启动的窗体是Form1
    bool isActivate = false;
    foreach(Form mdifrm in this.MdiChildren) // 检索MDI所有的子窗体
    {
         if(mdifrm.Gettype ==typeof(Form1)) // 如果当前找到的子窗体类型与Form1一致,
                                             // 那么直接激活该子窗体
         {
            mdifrm.Activate();
            isActivate = true;
             break;
         }
    }
    if(!isActivate)
    {
        Form1 f1 = new Form1();
        f1.Show();
    }