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

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

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

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

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

  1. Dim frmTmp As ClassForm 
  2. "实现已经设计好了一个称作
    (类名为)ClassForm的表单   
  3. frmTmp = New ClassForm 
  4. "在此定义它的一个实例  
  5. frmTmp.ShowDialog() 
  6. "作为模式窗体显示 

这样在当前窗体没有关闭以前,其他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()  

 

责任编辑:曹凯 来源: 博客园
相关推荐

2009-10-29 10:04:57

VB.NET Read

2010-01-11 18:05:24

VB.NET窗体继承

2009-10-27 15:02:07

VB.NET文件处理

2010-01-22 15:42:01

VB.NET错误

2010-01-07 17:10:01

VB.NET控件数组问

2010-01-20 14:52:21

VB.NET修改数据窗

2009-09-03 16:09:48

.net回车符

2009-04-30 13:24:45

VB.NET 2008窗体应用实例

2012-05-09 10:08:41

跨机房

2009-07-23 16:53:17

ASP.NET中文变问

2009-11-11 15:59:17

ADO.NET Ent

2009-11-03 17:31:01

VB.NET窗体

2010-03-30 16:04:34

Linux Nginx

2010-01-08 17:12:03

VB.NET短路判断

2010-09-27 13:14:42

JVM内存限制

2010-01-18 14:41:33

VB.NET抓取网页

2009-11-03 17:24:01

VB.NET特殊形状窗

2009-10-16 09:35:24

VB.NET制作透明窗

2009-10-14 13:56:05

VB.NET数据窗体

2010-01-13 09:31:39

VB.NET窗体打印
点赞
收藏

51CTO技术栈公众号