学习VB6.0时,你可能会遇到VB6.0项目升级问题,这里将介绍VB6.0项目升级问题的解决方法,在这里拿出来和大家分享一下。
VB6.0项目升级
如果你用升级向导 (Upgrade Wizard) 把 VB6.0项目升级为 Visual Basic .NET 版,则它会在每个窗体中自动添加一段特殊代码,通过显式创建窗体实例来模拟早期 Visual Basic 版本中的默认实例化机制。此段代码被包裹于标号为 “Upgrade Support”的代码区块内,借助一个新增的 Shared 属性来生成当前窗体的实例:
- Private Shared m_vb6FormDefInstance As Form1
- Private Shared m_InitializingDefInstance As Boolean
- Public Shared Property DefInstance() As Form1
- Get
- If m_vb6FormDefInstance Is Nothing _
- OrElse m_vb6FormDefInstance.IsDisposed Then
- m_InitializingDefInstance = True
- m_vb6FormDefInstance = New Form1()
- m_InitializingDefInstance = False
- End If
- DefInstance = m_vb6FormDefInstance
- End Get
- Set(ByVal Value As Form1)
- m_vb6FormDefInstance = Value
- End Set
- 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项目升级。
【编辑推荐】