VB.NET MDI子窗体实例化问题解决方案

VB.NET MDI子窗体在实际编程中往往会出现被对此实例化这样的情况。那么应该如何才能防范这一问题呢?就让我们一起来看看本文介绍的几种解决方法。

VB.NET 的出现帮助开发人员解决了以前很难实现的各种问题。下面大家就可以通过对VB.NET MDI子窗体在实际编写中遇到的实例化问题解决方法进行一个详细的了解,从而掌握这一问题的防范技巧。#t#

VB.NET MDI子窗体被多次实例化防范方法一

可能没有什么实用性,只适合简单项目:

  • Dim frmTmp As ClassForm
  • "实现已经设计好了一个称作
    (类名为)ClassForm的表单
  • frmTmp = New ClassForm
  • "在此定义它的一个实例
  • frmTmp.ShowDialog()
  • "作为模式窗体显示
  • 这样在当前窗体没有关闭以前,其他form上的菜单按钮都不可用,巧妙使用可以避免多次实例化的问题。

    VB.NET MDI子窗体被多次实例化防范方法二

    只适用于,form不是特别多,且多运行时占用内存没有特殊要求的场合

    在项目运行时,分别定义每个可能用到的form的实例,但不显示,只有在需要显示的时候每次调用,x.show(x为想显示的form实例名),关闭的时候使用x.hide即可。

    VB.NET MDI子窗体被多次实例化防范方法三

    分别定义每个需要显示的form类的全局变量,在实际显示窗体前使用以下代码:

    1. If frm Is Nothing OrElse 
      frm.IsDisposed Then  
    2. frm = New Form1  
    3. frm.Show()  
    4. Else  
    5. frm.Activate()  
    6. End If 

    VB.NET MDI子窗体被多次实例化防范方法四

    本方法特别适用于多文档界面:

    1. Dim frmTmp As Form  
    2. "搜索每个MDI子窗体一般打开的子
      窗体不会太多,所以不存在速度问题  
    3. For Each frmTmp In Me.MdiChildren  
    4. "if 找到你想显示的ClassFrm窗体  
    5. If TypeOf frmTmp Is ClassFrm Then  
    6. frmTmp.Activate()  
    7. Exit Sub  
    8. End If  
    9. Next  
    10. "如果MDI子窗体中没有你想显示的窗体  
    11. "则定义新的实例,并显示。  
    12. frmTmp = New ClassFrm400  
    13. frmTmp.MdiParent = Me 
    14. frmTmp.Show()