備妥要升級的 Visual Basic 6.0 應用程式
更新:2007 年 11 月
雖然將 Visual Basic 6.0 應用程式升級為 Visual Basic 2008 的程序大都是自動的,您還是可以進行一些小小的準備工作讓升級工作最佳化。
您可以遵循本主題中的建議,將專案升級為 Visual Basic 2008 之後所需的變更量減到最少,在某些情況下甚至可以排除這些變更。多數情況下,這些建議只代表良好的程式設計典範,不過,有些建議也會指出哪些物件和方法沒有對等用法,如果您想要將專案升級為 Visual Basic 2008,請謹慎使用這些物件和方法。
一般建議
這項建議看起來顯而易見,但是如果您的專案未經編譯,而且是直接在 Visual Basic 6.0 下執行,就無法升級成功。建議您在要進行升級的電腦中安裝 Visual Basic 6.0。除了可以讓您測試應用程式外,也可以確保升級所需的必要控制項、元件和型別程式庫都是有效的。
Visual Basic 2008 讓您可以升級 Visual Basic 6.0 的專案,如果有以 Visual Basic 版本 1 到 5 所撰寫的專案,應該在將專案升級為 Visual Basic 2008 前,先將其載入 Visual Basic 6.0 (選擇升級 Microsoft ActiveX 控制項)、編譯,然後再儲存起來。
表單和控制項的考量
Visual Basic 2008 擁有新的表單套件 (Package):Windows Form。Windows Form 大部分都和 Visual Basic 6.0 中的表單套件相容,但是還是有某些重要的差異,概述如下:
Visual Basic 2008 不支援 OLE 容器控制項,您應該避免在 Visual Basic 6.0 應用程式中使用此控制項。
Visual Basic 2008 中沒有 Shape 控制項。方形和矩形會升級成標籤 (Label),橢圓形和圓形則無法升級。您應該避免在應用程式中使用這些控制項。
Visual Basic 2008 中沒有 Line 控制項。水平線和垂直線會升級成標籤。斜線將不會升級,應該避免使用這些控制項。
Visual Basic 2008 有一組新的繪圖命令,可取代 Form 方法 (Circle、CLS、PSet、Line 和 Point)。由於新的物件模型和 Visual Basic 6.0 非常不同,這些方法無法被升級。
對於 Timer 控制項而言,將 Interval 屬性設定為 0 並不會停用計時器,而是將間隔重設為 1。在 Visual Basic 6.0 專案中,應該將 Enabled 設定為 False,而不是將 Interval 設定為 0。
Visual Basic 2008 具有兩個功能表控制項,分別為 MenuStrip 和 ContextMenuStrip,而 Visual Basic 6.0 具有一個功能表控制項,可做為 MainMenu 或 ContextMenu 控制項開啟。所有的功能表控制項都會升級為單一的 MenuStrip 元件,其中包含每一個功能表控制項的 MenuItem,您必須重建內容功能表並刪除多餘的 MenuStrip 控制項。
Visual Basic 2008 不支援動態資料交換 (DDE)。
Visual Basic 2008 不支援 Form.PrintForm 方法。
雖然 Visual Basic 2008 支援拖放功能,但是它的物件模型 (Object Model) 和 Visual Basic 6.0 中的不同。因此,Visual Basic 6.0 的拖放屬性 (Property) 和方法無法升級。
Visual Basic 2008 具有改良的 Clipboard 物件 (My.Computer.Clipboard),可以提供更多功能,並且比 Visual Basic 6.0 Clipboard 物件支援更多剪貼簿檔案格式。但是,由於物件模型間的差異,Clipboard 陳述式無法自動升級。
Visual Basic 2008 在執行階段不支援表單和控制項的 Name 屬性,因此,您不應該撰寫程式碼,反覆查看 Controls 集合尋找特定名稱的控制項(現在使用 .NET FrameworkSystem.Reflection 類別 (Class) 即可使用此功能)。
資料建議
Visual Basic 2008 加入了名為 ADO.NET 的 ADO 增強版本,該版本已經過最佳化,可在分散式應用程式中使用資料,當您在分散式應用程式內使用資料時,可以透過 ADO 提供效能改善。
Visual Basic 2008 中的程式碼只需做少許的修改,即能繼續使用遠端資料物件 (RDO) 和 ADO。但是,Visual Basic 2008 不支援資料存取物件 (DAO) 和 RDO 對控制項、資料控制項或 RDO 使用者連接的資料繫結 (Data Binding)。如果應用程式中會包含 DAO 或 RDO 資料繫結,建議您繼續使用 Visual Basic 6.0 或在將專案升級為 Visual Basic 2008 前,先將 DAO 或 RDO 資料繫結升級為 ADO,因為 Windows Form 支援 ADO 資料繫結。如何將 Visual Basic 的 DAO 或 RDO 升級為 ADO 的資訊可於 Visual Basic 6.0 的說明中取得。
Web 架構建議
Visual Basic 2008 加入了 ASP 的增強版本 ASP.NET,並且以 Web Form 強化架構,後者是使用類似 Visual Basic 的事件模型來產生 Web 網頁的技術。此架構為伺服器架構。
符合下列準則的 Web 架構應用程式將最容易升級:
依照 Microsoft 多層式架構方針。
使用 Active Server Pages (ASP)。
使用 Visual Basic 6.0 或 Visual C++ 6.0 COM 物件做為商務邏輯。
Visual Basic 2008 完全支援 ASP,您可以使用 ASP、ASP.NET 和 Web Form 繼續擴充應用程式。Visual Basic 6.0 和 Visual C++ 6.0 商務物件 (Business Ojbect) 可以不經修改繼續使用,或是升級為 Visual Basic 2008。
在 Visual Basic 2008 中,Webclass 已不存在。現有 Webclass 應用程式可以和 Visual Basic 2008 的 Web Form 和 ASP 應用程式進行溝通,或是直接升級為 Web Form 應用程式。