直播中
向?qū)?/P>
這些語句不會自動升級,因此將標記有“(statement) is not supported”[(語句)不被支持] 的升級錯誤。例如,以下代碼:
a = VarPtr(b)
升級后將變?yōu)椋?/P>
' UPGRADE_ISSUE: Function VarPtr() is not supported
a = VarPtr(b)
這也會導致編譯錯誤。
文件 I/O
Visual
Basic 6.0 語言中包括文件 I/O 語句。
Visual Basic.NET
通過類庫使用文件 I/O 操作。從語言中刪除文件 I/O 語句以便在 Visual Basic.NET 中使用不同的 I/O 庫。如果語言中存在文件 I/O 語句,將會使代碼更加累贅,標識符 Open、Close、Print 和 Write 將成為保留字。
升級
向?qū)?/P>
文件 I/O 語句將升級為相應的函數(shù)。例如,以下代碼:
Open nput )
Debug.Print
Visual
Basic 6.0 Debug.Print 將一行文字輸出到“立即”窗口。
Visual Basic.NET
Debug.WriteLine 將一行文字輸出到“輸出”窗口。還可以使用 Debug.Write 方法將文字輸出到“輸出”窗口,并且沒有換行符。
升級
向?qū)?/P>
Debug.Print 升級為 Debug.WriteLine。
資源文件
Visual
Basic 6.0 Visual Basic 6.0 支持每個工程使用一個 .res 文件。
Visual Basic.NET
Visual Basic.NET 支持多種資源文件??梢越壎ù绑w以自動從新的 .resX 格式資源文件中檢索資源。任何 CLR 類均可存儲在 .resX 文件中。
升級
向?qū)?/P>
文件由 .res 升級為 .resX,并且代碼被修改以便從 .resX 文件中加載。
Windows 應用程序
Visual Basic 窗體
Visual
Basic 6.0 Visual Basic 6.0 具有自己的窗體包,用于創(chuàng)建圖形 Windows 應用程序。
Visual Basic.NET
對于 Visual Basic.NET,Windows 窗體是一種新的窗體包。由于 Windows 窗體是以公共語言運行時 (CLR) 為目標構造的,因此 Windows 窗體可以充分利用 CLR 的全部功能。特別是,由于 Windows 窗體包具有部署、應用程序分離、版本和代碼訪問安全特性方面的優(yōu)勢,您現(xiàn)在可以構造基于 Windows 的客戶端應用程序,其部署和更新明顯更加簡易。您甚至可以構造與 HTML 具有相同瀏覽器部署方案的 Windows 窗體應用程序。正如代碼訪問安全性的粒度控制一樣,這些特性也使得在瀏覽器中使用 Windows 窗體控件非常令人矚目。
Windows 窗體集還為 Visual Basic 開發(fā)者提供了許多新功能,例如可視化繼承、改進的本地化和訪問支持、自動調(diào)整窗體大小和就地菜單編輯器。
升級
向?qū)?/P>
將 Visual Basic 窗體升級為 Windows 窗體。
PrintForm 方法
Visual
Basic 6.0 PrintForm 方法將 Form 對象的圖象一個字節(jié)一個字節(jié)地發(fā)送至打印機。但是,此打印功能在某些窗體中無法正常工作。
Visual Basic.NET
在 Windows 窗體中,Visual Basic.NET 采用的打印框架使您可以快速生成復雜的打印文檔。它還包括內(nèi)置的“打印預覽”對話框。
升級
向?qū)?/P>
PrintForm 方法調(diào)用標記有升級錯誤。您可以使用新的打印框架創(chuàng)建打印文檔,甚至可以拍下應用程序窗口的屏幕快照并進行打印。
Circle、Cls、PSet、Line 和 Point 方法
Visual
Basic 6.0 通過 Circle、Cls、PSet、Line 和 Point 方法,您可以在窗體中繪圖,也可以清除這些圖象。
Visual Basic.NET
Windows 窗體具有一套新的圖形命令,用于替換 Circle、Cls、PSet、Line 和 Point。Windows 窗體包是在 GDI+ 的基礎上構建的。GDI+ 是功能豐富的二維文字和圖象處理圖形庫,現(xiàn)在可以直接在 Visual Basic.NET 中使用。在以前的版本中,如果不通過 Declare 語句和 GDI API,Visual Basic 程序員無法使用這些功能。雖然這一轉(zhuǎn)變比較大,但是 GDI+ 的靈活性和強大功能讓程序員能夠快速開發(fā)應用程序,而使用以前版本的 Visual Basic 將會花費多得多的工作量。
升級
向?qū)?/P>
對這些方法的調(diào)用標記有升級錯誤。您可以在 System.Drawing 中記下使用 GDI+ 類的圖形調(diào)用。
Name 屬性
Visual
Basic 6.0 Name 屬性返回代碼中使用的名稱以識別窗體、控件或數(shù)據(jù)訪問對象。在運行時為只讀。
Visual Basic.NET
在運行時 Windows 窗體不支持窗體和控件的 Name 屬性。如果需要迭代 Controls 集合以查找某一名稱的控件,您可以使用 .NET 框架的 System.Reflection 類進行查找。
升級
向?qū)?/P>
控件的 Name 屬性將標記有升級錯誤。
Caption 屬性
Visual
Basic 6.0 某些控件(例如 Label)具有 Caption 屬性,用于確定在控件中或控件旁邊顯示的文字。其他控件(例如 TextBox)具有 Text 屬性,用于確定控件中包含的文字。
Visual Basic.NET
在 Windows 窗體中,對于所有控件,用于顯示控件中文字的屬性均統(tǒng)一稱為 Text。這簡化了控件的使用。
升級
向?qū)?/P>
將控件的 Caption 屬性變?yōu)?Text。
Tag 屬性
Visual
Basic 6.0 Tag 屬性可以返回或設置用于存儲程序所需額外數(shù)據(jù)的表達式。
在 Visual Basic 6.0 中無法擴展內(nèi)置控件,所以 Tag 屬性是必需的。
Visual Basic.NET
在 Windows 窗體中,您可以使用繼承來擴展內(nèi)置控件,并添加自己的屬性。將繼承作為工具使用明顯使內(nèi)置控件更加靈活。您不僅可以根據(jù)需要添加任意多種屬性,還可以將這些屬性設為強屬性。
升級
向?qū)?/P>
兼容庫中的 Windows 窗體擴展程序 Tag 控件用于提供相同的功能。
ScaleMode 屬性
Visual
Basic 6.0 ScaleMode 屬性返回或設置一個值,以在使用圖形方法或定位控件時表明對象的坐標度量單位。
Visual Basic.NET
Windows 窗體始終使用象素作為度量單位,簡化了窗體布局。
此外,Windows 窗體使用更好的方法來調(diào)整大小。AutoScaleBaseSize 屬性根據(jù)屏幕的分辨率 (dpi) 和使用的字體大小自動調(diào)整縮放比例。
升級
向?qū)?/P>
使用“twip”(緹)(Visual Basic 6.0 中 ScaleMode 的默認設置)的代碼將完全升級。如果 ScaleMode 為非緹,您將遇到調(diào)整大小方面的問題。
有關該主題的全面說明,請參閱白皮書《準備將 Visual Basic 6.0 應用程序升級到 Visual Basic.NET》(英文)。
字體
Visual
Basic 6.0 窗體和控件可以使用任何 Windows 字體。
Visual Basic.NET
窗體和控件只能使用 TrueType 或 OpenType 字體。使用這些類型的字體可以解決不同操作系統(tǒng)版本及其本地化版本之間的許多不一致性問題。這些字體還具有不依賴設備分辨率和反走樣等功能。
升級
向?qū)?/P>
如果在應用程序中使用非 TrueType 字體,這些字體將變?yōu)槟J的 Windows 窗體字體,但其格式(大小、粗體、斜體和下劃線)將會丟失。
Screen.MousePointer 屬性
Visual
Basic 6.0 Screen 對象的 MousePointer 屬性可以返回或設置一個值,以表明運行時鼠標在應用程序窗體外部顯示的鼠標指針類型。
Visual Basic.NET
如果鼠標指針位于應用程序內(nèi)部的窗體中,則可以進行操作;當其位于應用程序外時則不能。在今后的版本中我們將繼續(xù)完善其功能。
升級
向?qū)?/P>
使用 Sceen.MousePointer 的語句標記有升級錯誤。
Timer.Interval 屬性
Visual
Basic 6.0 Timer 控件的 Interval 屬性返回或設置 Timer 事件調(diào)用之間的毫秒數(shù)。如果設置為 0,則禁用 Timer 控件。Enabled 屬性還用于確定計時器是否在運行。這將引起混亂,因為即使 Enabled 屬性為 True,如果時間間隔為 0,仍不能啟用計時器。
Visual Basic.NET
Interval 屬性表明計時器刻度之間的時間(以毫秒為單位)。此屬性不能設置為 0。Enabled 屬性指定計時器是否在運行。這一方式更加直接,可以簡化 Timer 對象的編碼。
升級
向?qū)?/P>
如果 Timer.Interval 設置為 0,升級向?qū)軌驒z測到這一情況,并為 Timer.Interval 標記升級錯誤。
建議您在 Visual Basic 6.0 應用程序中使用 Timer.Enabled,因為此屬性可以順利升級。
控件數(shù)組
Visual
Basic 6.0 控件數(shù)組是一組共享同一名稱和類型的控件。它們也共享同一事件過程。控件數(shù)組至少有一個元素,只要您的系統(tǒng)資源和內(nèi)存允許,它可以有任意多個元素。同一控件數(shù)組的元素具有各自的屬性設置。
Visual Basic.NET
Windows 窗體體系結(jié)構可以處理使用控制數(shù)組的多種方案。例如,在 Windows 窗體中可以通過單一事件句柄處理多個控件的多個事件。
升級
向?qū)?/P>
兼容庫中的“控件數(shù)組 Windows 窗體”擴展程序控件提供了這種功能。
Menu 控件
Visual
Basic 6.0 Menu 控件代表菜單樹中的各個項目。同一 Menu 控件實例可以同時在主菜單或上下文菜單中使用。
Visual Basic.NET
MenuItem 控件代表菜單樹中的各個項目。MenuItem 控件可以添加至 MainMenu 項目或 ContextMenu 項目,但不能同時添加。要在 MainMenu 對象和 ContextMenu 對象中共享菜單,可以在 MenuItem 中使用 CloneMenu 方法創(chuàng)建菜單副本。
升級
向?qū)?/P>
使用上下文菜單的代碼將標記有升級錯誤??梢允褂?MenuItem.CloneMenu 創(chuàng)建 MainMenu 項目的副本,用作 ContextMenu 項目。
OLE 容器控件
Visual
Basic 6.0 OLE 容器控件使您可以將 OLE 對象添加至窗體。
Visual Basic.NET
Visual Basic.NET 中沒有 OLE 容器控件。如果需要與 OLE 容器控件相當?shù)目丶?,可以?WebBrowser 控件添加至窗體,并將其用作 OLE 容器控件。
升級
向?qū)?/P>
在升級報告中報告此升級錯誤,并在窗體中放置不受支持控件的占位符。
Image 控件
Visual
Basic 6.0 Image 和 PictureBox 控件均可顯示位圖、圖標、圖元文件、增強型圖元文件、JPEG 或 GIF 文件的圖形。
Visual Basic.NET
Visual Basic.NET 中的 PictureBox 控件代替了 Visual Basic 6.0 中的 PictureBox 和 Image 控件。Windows 窗體中的 PictureBox 控件還支持動態(tài) GIF 文件。但是,如果您需要一個簡單方案,以便在窗體中繪制圖象,您也可以不使用窗體的 OnPaint 事件,而使用 DrawImage 方法。
升級
向?qū)?/P>
Image 控件變?yōu)?PictureBox 控件。
Line 和 Shape 控件
Visual
Basic 6.0 Line 控件顯示水平線、垂直線或?qū)蔷€。Shape 控件顯示矩形、正方形、橢圓形、圓形、圓角矩形或圓角正方形。
Visual Basic.NET
System.Drawing 中的 GDI+ 類代替了 Line 和 Shape 控件。要在窗體中繪制各種形狀的圖形,請不要使用 OnPaint 事件,而使用 GDI+ Draw 方法繪制圓、正方形等各種形狀。
升級
向?qū)?/P>
水平和垂直 Line 控件變?yōu)?Label 控件(沒有文字,高度或?qū)挾仍O置為 1)。對角線控件在升級報告中報告有升級錯誤,并在窗體中放置不受支持控件的占位符。
矩形和正方形 Shape 控件變?yōu)?Label 控件。其他 Shape 控件在升級報告中報告有升級錯誤,并在窗體中放置不受支持控件的占位符。
Windowless 控件
Visual
Basic 6.0 輕便控件,有時稱為無窗口的控件,與常規(guī)控件最顯著區(qū)別是:沒有窗口句柄(hWnd 屬性)。因此,它們使用的系統(tǒng)資源較少。您可以在設計時將 Windowless 屬性設置為 True 以創(chuàng)建輕便用戶控件。輕便用戶控件只能包含其他輕便用戶控件。并非所有容器均支持輕便控件。
Visual Basic.NET
在 Windows 窗體中,大多數(shù)無窗口控件默認在窗口中使用。使用無窗口控件的主要優(yōu)點是:當窗體中有非常大量的控件時,可以減少資源消耗(窗口句柄)。這僅限于 Windows 9x。Microsoft Windows NT? 和 Microsoft Windows 2000 沒有這種資源限制。
使用無窗口控件也有缺點(如分層等布局問題),但 Microsoft 認識到了無窗口控件的作用,并將發(fā)布示例來展示如何在 Windows 窗體中獲得類似效果。