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

王朝vb·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

方法一

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

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()来实现的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航