是这样的。有一个窗体。第一次触发事件的时候是显示。但是我希望这个窗体唯一。就是以后再触发同样的事件的时候把老的窗体关闭掉。
如何操作?就是要在show之前检查是否已经有了类似窗体。如果有就关闭掉在show。

解决方案 »

  1.   

    把打开的对象先存起来,比如hashtableform frm =new form1();
    ht.add("form1",frm);
    下次打开时,先判断frm存在否
    frm=ht("form1");  
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

    '[ID]       OpenOnce
        '[中文名称] 判断窗体只打开一次
        '[功能概要] 判断子窗体是否实例化打开过
        '[参数]     1:pfrmChild         i:子窗体
        '           2:pfrmParent        i:拥有该子窗体的父窗体
        '[返回值]   1:true              是第一次实例化打开
        '           2:false             已经实例化打开过
        '[记事]     无
        '-------------------------------------------------------------------------------
        Public Function OpenOnce(ByRef pfrmChild As Form, ByVal pfrmParent As Form) As Boolean
            Dim frmChild As Form        ''' 遍历子窗体
            For Each frmChild In pfrmParent.OwnedForms
                If pfrmChild.Tag = frmChild.Tag Then
                    pfrmChild = frmChild
                    frmChild.Activate()                   '击活子窗体
                    Return False
                    Exit Function
                End If
            Next
            Return True
        End Function
      

  3.   

    如果希望窗体唯一的话,不必打开新的关闭已有的呀。可以让新的不打开呀,用mutex
      

  4.   

    应用例子
    Form1 frm =new Form1();
    if(OpenOnce(frm,this)==true)
    {
        frm.Owner=this;//设置当前窗体拥有Form1实例
        frm.show();
    }
      

  5.   

    哥们,是从VB6转过来的吗?
    呵呵。在NET里要么采用yuqi508(毛路) ( ) 信誉:100    Blog 的循环方法,要么就要获得最开始创建时的窗体对象,再进行操作。不过,循环的方法还是比较方便的。
      

  6.   


    应用例子
    Form1 frm =new Form1();
    if(OpenOnce(frm,this)!=true)
    {
          frm.close();//关闭
    }