下载中心┊文章中心┊软件分类┊更新软件┊推荐下载┊热门软件┊更新文章┊热门文章
 
《拓文asp.net网站内容管理系统》官方演示站。
 设为首页    
 收藏本站
 作者:黄振安
 
网站首页 开源拓文 .NET编程 网站编程 网页设计 图形图像 数据库 软件工程留言本
    站内搜索:   
您现在的位置: 拓文网络 → 文章中心 → .NET编程 → VB.NET → vb.net 防止MDI子窗体被多次实例化的四种方法[正文]

热 门 文 章

相 关 文 章
  • vb.net 中MDI子窗体对其父窗体...
  • vb.net 防止MDI子窗体被多次实例化的四种方法
     
    [作者:不详    转贴自:不详    点击数:    字体:【大 中 小】    更新时间:2006-2-25 15:10:57]

    自从.net把每个设计form都当作一个类来处理后,相信很多习惯了vb6.0的兄弟姐妹们,一时半会还真不适应,可能会出现莫名其妙的问题,本篇为在下《.net环境下开发》的第二篇,如何防止窗体被多次实例化。问题发现方法:一个菜单项显示一个非模化form,连续点击两次,就会同时显示两个实体。本篇文章只列出可行的四种方法,仅供大家参考。
    方法一:
    可能没有什么实用性,只适合简单项目:
    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()

    页次:1/1  1篇/页  首页   上一页   下一页   尾页  合计 1 篇 Go:
     
    上一篇:修改DataSet里的内容
    下一篇:vb.net 中MDI子窗体对其父窗体...
    winner 打印本页 关闭窗口

         文 章 评 论
    评论人 查看该文章的评论 发表时间
       笔 名* : 0 50分 60分 70分 80分 90分 100分
    评论内容 *: (最多600字。当前字数:0)


    没有相关评论,欢迎您参与!

    - 关于本站 - 网站帮助 - 下载声明 - 友情连接 - 网站地图 -
    Copyright © 2005-2006 myTopWin.Com. All Rights Reserved . [桂ICP备06004496号]