如何完成VB6.0项目升级

开发 后端
这里介绍如果你用升级向导把 VB6.0项目升级为 Visual Basic .NET 版,则它会在每个窗体中自动添加一段特殊代码,通过显式创建窗体实例来模拟早期 Visual Basic 版本中的默认实例化机制。

学习VB6.0时,你可能会遇到VB6.0项目升级问题,这里将介绍VB6.0项目升级问题的解决方法,在这里拿出来和大家分享一下。

VB6.0项目升级

如果你用升级向导 (Upgrade Wizard) 把 VB6.0项目升级为 Visual Basic .NET 版,则它会在每个窗体中自动添加一段特殊代码,通过显式创建窗体实例来模拟早期 Visual Basic 版本中的默认实例化机制。此段代码被包裹于标号为 “Upgrade Support”的代码区块内,借助一个新增的 Shared 属性来生成当前窗体的实例:

 

  1. Private Shared m_vb6FormDefInstance As Form1  
  2. Private Shared m_InitializingDefInstance As Boolean 
  3. Public Shared Property DefInstance() As Form1  
  4. Get 
  5. If m_vb6FormDefInstance Is Nothing _  
  6. OrElse m_vb6FormDefInstance.IsDisposed Then 
  7. m_InitializingDefInstance = True 
  8. m_vb6FormDefInstance = New Form1()  
  9. m_InitializingDefInstance = False 
  10. End If 
  11. DefInstance = m_vb6FormDefInstance  
  12. End Get 
  13. Set(ByVal Value As Form1)  
  14. m_vb6FormDefInstance = Value  
  15. End Set 
  16. End Property  


代码中的 DefInstance 是一个 Shared 属性,它能以 “窗体名.DefInstance” 的形式直接访问。它所在项目中的任何代码访问它都将得到同一个窗体实例。这样,你就能模拟 VB6.0项目对窗体的直接引用了,只不过在代码中以“Form2.DefInstance”代替“Form2” 而已。

这时,你只需用 Form2.DefInstance.Show() 和Form2.DefInstance.TextBox1.Text = "Fred" 分别替换原先对 Form2 相应的直接引用就大功告成了。假如你不用升级向导,而是在 Visual Basic .NET 窗体中手工插入上述代码 (以及升级向导在窗体的 New过程中自动添加的代码),也行。当然了,你并不一定非要修改窗体代码,因为有一种编程模式可以在 .NET 项目中模拟默认窗体实例的创建。以后再详细介绍这种编程模式,本文只介绍VB6.0项目升级。

【编辑推荐】

  1. 详解VB6.0和VB.NET窗体的区别
  2. 概括VB.NET创建WebService
  3. VB.NET Account对象简介
  4. 简单描述VB.NET数据窗体
  5. 深入解析VB.NET创建表示层
责任编辑:佚名 来源: 博客园
相关推荐

2009-10-09 15:26:24

VB6.0开发环境

2009-10-15 17:44:40

VB6.0 datat

2009-10-09 16:00:34

VB6.0开发

2009-10-14 15:11:28

VB6.0实现多窗体交

2009-10-14 14:50:16

VB6.0VB.NET

2009-10-10 16:44:52

VB.NET开发控件

2009-10-14 10:25:52

VB.NET读写文本文

2009-10-22 16:46:03

VB.NET初步知识

2009-10-10 17:06:09

VB和VB.NET

2010-11-15 08:44:38

ASP.NET MVC

2019-06-21 08:00:16

工业4.0工业物联网IIoT

2022-08-17 12:09:29

Vue3.2代码

2022-08-15 07:34:36

vite项目Vue3

2009-12-18 09:17:29

VS 2008项目

2009-12-21 17:53:45

Fedora Core

2009-12-17 14:24:16

ASP.NET Ext

2009-11-02 17:15:42

C#转换为VB.NET

2010-11-11 08:37:48

TFS2010

2012-02-06 08:54:12

项目管理

2015-12-14 16:48:09

完成业余项目
点赞
收藏

51CTO技术栈公众号