我在主窗口中打开一个子窗口用的是如下语句:
private void menuItem6_Click(object sender, System.EventArgs e)
{
frmDeviceBrower frmb = new frmDeviceBrower();
frmb.MdiParent = this;
frmb.Show();}
每次点击这个菜单都会出现一个新的frmDeviceBrower 实例
我想如果已经存在一个frmDeviceBrower 实例的话,点击这个菜单就不要再创建新的实例了,直接显示已经存在的实例。怎么实现阿!谢谢!

解决方案 »

  1.   

    可设置一个全局的标志变量来实现,通过判断标志变量的值来判断是否创建新实例或show已存在的实例。
      

  2.   

    frmDeviceBrower frmb ;定义为窗体级对象,并将方法改为
    private void menuItem6_Click(object sender, System.EventArgs e)
    {

    if ((frmb ==null)||(frmb.IsDisposed==true))
       {frmb = new frmDeviceBrower();}
    frmb.MdiParent = this;
    frmb.Show();}
      

  3.   

    遍历子窗体
    foreach( Form child in this.MdiChildren )
    {
       if( child.gettype() == typeof(frmDeviceBrower) )
           ...
    }
      

  4.   

    一开始就show,后来则只是隐藏以及显示。
      

  5.   

    foreach (frmDeviceBrower frm in this.MdiChildren)
    {
    frm.Activate();
    frm.WindowState=FormWindowState.Maximized  ;
    return;
    }
                frmDeviceBrower frm1=new frmDeviceBrower() ;
                frm1.MdiParent = this;
                frm1.Show();