如何完成VB6.0項目升級
學習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項目升級。
【編輯推薦】