如何完成VB6.0項(xiàng)目升級(jí)
學(xué)習(xí)VB6.0時(shí),你可能會(huì)遇到VB6.0項(xiàng)目升級(jí)問題,這里將介紹VB6.0項(xiàng)目升級(jí)問題的解決方法,在這里拿出來和大家分享一下。
VB6.0項(xiàng)目升級(jí)
如果你用升級(jí)向?qū)?(Upgrade Wizard) 把 VB6.0項(xiàng)目升級(jí)為 Visual Basic .NET 版,則它會(huì)在每個(gè)窗體中自動(dòng)添加一段特殊代碼,通過顯式創(chuàng)建窗體實(shí)例來模擬早期 Visual Basic 版本中的默認(rèn)實(shí)例化機(jī)制。此段代碼被包裹于標(biāo)號(hào)為 “Upgrade Support”的代碼區(qū)塊內(nèi),借助一個(gè)新增的 Shared 屬性來生成當(dāng)前窗體的實(shí)例:
- 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 是一個(gè) Shared 屬性,它能以 “窗體名.DefInstance” 的形式直接訪問。它所在項(xiàng)目中的任何代碼訪問它都將得到同一個(gè)窗體實(shí)例。這樣,你就能模擬 VB6.0項(xiàng)目對(duì)窗體的直接引用了,只不過在代碼中以“Form2.DefInstance”代替“Form2” 而已。
這時(shí),你只需用 Form2.DefInstance.Show() 和Form2.DefInstance.TextBox1.Text = "Fred" 分別替換原先對(duì) Form2 相應(yīng)的直接引用就大功告成了。假如你不用升級(jí)向?qū)?,而是?Visual Basic .NET 窗體中手工插入上述代碼 (以及升級(jí)向?qū)г诖绑w的 New過程中自動(dòng)添加的代碼),也行。當(dāng)然了,你并不一定非要修改窗體代碼,因?yàn)橛幸环N編程模式可以在 .NET 項(xiàng)目中模擬默認(rèn)窗體實(shí)例的創(chuàng)建。以后再詳細(xì)介紹這種編程模式,本文只介紹VB6.0項(xiàng)目升級(jí)。
【編輯推薦】