Visual Basic 6.0 使用者可用的字型處理方式
更新:2007 年 11 月
本主題將比較 Visual Basic 6.0 的字型處理技術及其 Visual Basic 2008 的對等用法。
概念上的差異
Visual Basic 6.0 中的字型是以兩種不同的方式處理:視為表單及控制項的 Font 屬性,或者視為 stdFont 物件。
在 Visual Basic 2008 中,只有一個 Font 物件,那就是System.Drawing.Font。表單或控制項的 Font 屬性會使用 Font 物件當做引數。
設定 Font 屬性 (Property)
在 Visual Basic 6.0 中,可以透過指派 stdFont 物件,或直接在控制項上設定屬性的方式,在執行階段設定 Font 屬性,這兩種方法也可以交替使用。
在 Visual Basic 2008 中,控制項的 Font 屬性在執行階段是唯讀,不能直接設定屬性。每一次要設定屬性,都必須將新的 Font 物件具現化。
字型繼承
在 Visual Basic 6.0 中,必須針對每個控制項或表單個別設定 Font 屬性。雖然使用 stdFont 物件可簡化程序,但仍需撰寫程式碼。
在 Visual Basic 2008 中,除非子物件已明確設定,否則 Font 屬性會自動繼承自其父代。例如,若表單上有兩個標籤控制項,並將表單的 Font 屬性變更為 Arial,則標籤控制項的字型也會變更為 Arial。如果接著將一個標籤的字型變更為 Times Roman,則之後再變更表單字型也無法覆寫此標籤的字型。
字型相容性
由於回溯相容性 (Backward Compatibility),因此 Visual Basic 6.0 支援點陣字型 (Raster Font),但是 Visual Basic 2008 只支援 TrueType 和 OpenType 字型。
列舉字型
在 Visual Basic 6.0 中,可以使用 Screen.Fonts 集合以及 Screen.FontCount 屬性,列舉可用的螢幕字型。
在 Visual Basic 2008 中,已經沒有 Screen 物件;若要列舉系統上的可用字型,必須使用 System.Drawing.FontFamily 命名空間。
注意事項: |
---|
Visual Basic 6.0 列舉了所有的字型類型,而 Visual Basic 2008 只支援 TrueType 和 OpenType 字型,不列舉其他字型類型。此外,Visual Basic 6.0 列舉出字型系列中各個字元集 (Character Set) 版本 (例如 Arial、Arial Baltic、Arial Greek 等),而 Visual Basic 2008 則只列舉出字型系列。 |
字型的程式碼變更
下列程式碼範例會示範 Visual Basic 6.0 與 Visual Basic 2008 之間的程式撰寫技巧差異。
設定字型屬性的程式碼變更
下列範例會示範在執行階段設定 Font 屬性。在 Visual Basic 6.0 中,可以直接在控制項上設定屬性,但在 Visual Basic 2008 中,必須建立新的 Font 物件,並在每次需要設定屬性時,將這個物件指派給控制項。
' Visual Basic 6.0
' Set font properties directly on the control.
Label1.FontBold = True
' Create a stdFont object.
Dim f As New stdFont
' Set the stdFont object to the Arial font.
f.Name = "Arial"
' Assign the stdFont to the control's font property.
Set Label1.Font = f
' You can still change properties at run time.
Label1.FontBold = True
Label1.FontItalic = True
' Visual Basic
' Create a new Font object Name and Size are required.
Dim f As New System.Drawing.Font("Arial", 10)
' Assign the font to the control
Label1.Font = f
' To set additional properties, you must create a new Font object.
Label1.Font = New System.Drawing.Font(Label1.Font, FontStyle.Bold Or FontStyle.Italic)
列舉字型的程式碼變更
下列範例會示範以電腦上安裝的字型清單,填入 ListBox 控制項。
注意事項: |
---|
Visual Basic 6.0 列舉了所有的字型類型,而 Visual Basic 2008 只支援 TrueType 和 OpenType 字型,不列舉其他字型類型。此外,Visual Basic 6.0 列舉出字型系列中各個字元集 (Character Set) 版本 (例如 Arial、Arial Baltic、Arial Greek 等),而 Visual Basic 2008 則只列舉出字型系列。 |
' Visual Basic 6.0
Dim i As Integer
For i = 0 To Screen.FontCount – 1
List1.AddItem Screen.Fonts(i)
Next i
' Visual Basic
Dim ff As FontFamily
For Each ff In System.Drawing.FontFamily.Families
listBox1.Items.Add(ff.Name)
Next
升級注意事項
當 Visual Basic 6.0 應用程式升級至 Visual Basic 2008 時,會修改所有字型處理程式碼,以使用新的 Font 物件。
Visual Basic 2008 中的字型繼承會使得應用程式外觀產生非預期的變更。應該在轉換後的應用程式中,檢查任何在表單層次或容器層次明確設定字型的程式碼,並在必要時,為不應繼承該字型的任何子控制項變更字型。
在升級時,點陣字型轉換為預設 OpenType 字型:Microsoft Sans Serif。並未保留如 Bold 或 Italic 等格式。如需詳細資訊,請參閱只支援 OpenType 和 TrueType 字型。
如果您的應用程式包含列舉字型的程式碼,升級後的應用程式將不會列舉點陣字型,而且列舉的將是字型系列,而非個別的字元集版本。