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类的全局变量,在实际显示窗体前使用以下代码:
- If frm Is Nothing OrElse
frm.IsDisposed Then- frm = New Form1
- frm.Show()
- Else
- frm.Activate()
- End If
VB.NET MDI子窗体被多次实例化防范方法四
本方法特别适用于多文档界面:
- 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()