首页 > 编程 > .NET > 正文

vb.net 防止MDI子窗体被多次实例化的四种方法

2024-07-10 13:00:41
字体:
来源:转载
供稿:网友
方法一
            可能没有什么实用性,只适合简单项目:
       dim frmtmp as classform        "实现已经设计好了一个称作(类名为)classform的表单       
       frmtmp = new classform          "在此定义它的一个实例

        frmtmp.showdialog()                "作为模式窗体显示
这样在当前窗体没有关闭以前,其他form上的菜单按钮都不可用,巧妙使用可以避免多次实例化的问题。
方法二
          只适用于,form不是特别多,且多运行时占用内存没有特殊要求的场合
         在项目运行时,分别定义每个可能用到的form的实例,但不显示,只有在需要显示的时候每次调用,x.show(x为想显示的form实例名),关闭的时候使用x.hide即可。
方法三
        分别定义每个需要显示的form类的全局变量,在实际显示窗体前使用以下代码:
      if frm is nothing orelse frm.isdisposed then
            frm = new form1
            frm.show()
        else
            frm.activate()
        end if
方法四
       本方法特别适用于多文档界面:
        dim frmtmp as form
      "搜索每个mdi子窗体一般打开的子窗体不会太多,所以不存在速度问题
       for each frmtmp in me.mdichildren
          "if 找到你想显示的classfrm窗体
            if typeof frmtmp is classfrm then
                frmtmp.activate()
                exit sub
            end if
        next
        "如果mdi子窗体中没有你想显示的窗体
        "则定义新的实例,并显示。
        frmtmp = new classfrm400
        frmtmp.mdiparent = me
        frmtmp.show()

在项目中,因为treeview的影响,使得传统的方法不能实现子窗体位于顶层,弄了好久,最后用.showdialog()来实现的。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表