有多种方法可以实现,我现在就给你说三种:1、如果你的主窗口是MdiContainer,新窗口是MdiChildren,假设所属的类为frmOilInfo:
foreach (Form frm in this.MdiChildren)
{
if (frm is frmOilInfo)
{
frm.Activate();
return;
}
}frmOilInfo dlgOilInfo=new frmOilInfo();
dlgOilInfo.MdiParent=this;
dlgOilInfo.Show(); 2、如果不是MDI,用FindWindow或FindWindowEx来实现。3、在新窗口所属的类中定义一个静态变量,用以存储窗体打开的状态,每一次点打开窗口时,判断一下,如果窗体存在,acitve().,如果不存在show()

解决方案 »

  1.   

    3、在新窗口所属的类中定义一个静态变量,用以存储窗体打开的状态,每一次点打开窗口时,判断一下,如果窗体存在,acitve().,如果不存在show()
    能否把第三中详细说说
      

  2.   

    http://expert.csdn.net/Expert/topic/1222/1222364.xml?temp=.9210474
      

  3.   

    第三种方法假设你要打开的是Form6,在Form6中定义一个变量
    public static bool isOpened=false;在你要打开Form6的地方写
    Form6 frm=new Form6();if (!Form6.isOpened)
    {
    frm.Show();
    Form6.isOpened=true;
    }
      

  4.   

    将frmDisp放在类中声明,不要在按钮事件中声明
    在click中添加以下代码
     if frmDisp is nothing then 
        frmdisp = new frmMain()
     end if
     frmdisp.show()
    这种方法不错,可是C#里怎么写(frmDisp is nothing)怎么改呢!
      

  5.   

    将frmDisp放在类中声明,不要在按钮事件中声明
    在click中添加以下代码
     if frmDisp is nothing then 
        frmdisp = new frmMain()
     end if
     frmdisp.show()
    这种方法不错,可是C#里怎么写(frmDisp is nothing)怎么改呢!>>>>>>>>>>>>>>>>>>>>>>>>>
    将frmDisp放在类中声明,不要在按钮事件中声明
    frmMain frDisp=null;
    在click中添加以下代码
     if frmDisp == null  
        frmdisp = new frmMain();
     
     frmdisp.show();
      

  6.   

    To: NaZiChong(ZiChong)
      我已经测试过,不过好象在Mdi模式下打开子窗体,不能实现功能。。
    能否有其他方式
    To:HellMaster(李晋) 
       第一种方法可以在mdi模式下打开子窗体,第三种没有测试过,是否能行的通。给我答案就ok...
      

  7.   

    to: meetweb(niky)
    我已经测试过,不过好象在Mdi模式下打开子窗体,不能实现功能。。怎么可能???这段代码跟是否是Mdi毫无关系!
    我也测试过了,不是测试,我是经常使用,都没有发现任何问题呀!贴上你的代码,我要看个究竟!!
      

  8.   

    To: NaZiChong(ZiChong) 
      打开是能打开,但是子窗体跑出母窗体的外面来啦。
    附代码如下:
    public static FrmFileTrans ft=null;
      private void menuItem6_Click(object sender, System.EventArgs e)
    {

    if(ft==null)
    {
    ft=new FrmFileTrans();
    }
    ft.Show();
    }
      

  9.   

    public static FrmFileTrans ft=null;change to:FrmFileTrans ft=null;that's ok!
      

  10.   

    奥,对了,子窗体跑出母窗体的外面应该在fr.show();后加一句:
    fr.MdiParent=你的父窗体;
    加前面也行看看现在行了吗??
      

  11.   

    NaZiChong(ZiChong) 
      怪事情,怎么后来出现无法访问"FrmFileTrans"的已处置对象。
    应用程序发生没处理的异常,
      到底那里出错。我的操作是,先打开,后关闭,然后打开,就出错啦。
    问题出在那里
      

  12.   

    if (frm2==null || frm2.IsDisposed)
    frm2=new Form2();
    frm2.MdiParent=this;
    frm2.Show();这样应该没有问题了吧!