更新:2007 年 11 月
本主题将 Visual Basic 6.0 中的颜色处理与其在 Visual Basic 2008 中的等效项进行比较。
在 Visual Basic 2008 中处理颜色与在 Visual Basic 6.0 中处理颜色类似;但是需要了解几个概念差异。此外,Visual Basic 6.0 中用于指定颜色的常量在 Visual Basic 2008 中由新的颜色枚举所取代。
概念差异
在 Visual Basic 6.0 中,颜色由 Long 类型的值表示;在 Visual Basic 2008 中,颜色为 Color 类型。Visual Basic 6.0 中为八种标准颜色提供了常量;在 Visual Basic 2008 中有 100 多种命名的颜色。
| .gif) 提示: | 
|---|
| 若要查找不是标准颜色的 Visual Basic 6.0 颜色的等效值,可使用 ColorTranslator 类并向其传递 Visual Basic 6.0 颜色的 Long 值。 | 
颜色常量
在 Visual Basic 6.0 中,为可用于将颜色映射到用户系统首选项的系统颜色提供了常数。在 Visual Basic 2008 中,系统颜色为 SystemColors 类型。
BackColor 和 ForeColor 属性
在 Visual Basic 6.0 中,控件的 BackColor 和 ForeColor 属性必须在设计时或运行时显式设置;颜色是不能继承的。在 Visual Basic 2008 中,除非在设计时或运行时显式设置颜色,否则将继承其父级的颜色设置。有关更多信息,请参见 颜色行为(针对 Visual Basic 6.0 用户)。
Palette 和 PaletteMode 属性
在 Visual Basic 6.0 中,窗体的 Palette 和 PaletteMode 属性用于控制在 256 色显示器上显示图像时使用的颜色集。Visual Basic 2008 不支持 Palette 和 PaletteMode 属性。有关更多信息,请参见 调色板(针对 Visual Basic 6.0 用户)。
MaskColor 属性
CheckBox、Button 和 RadioButton 控件不再具有 Visual Basic 6.0 的 MaskColor 属性。可以通过使用图形方法模拟 MaskColor 属性。有关更多信息,请参见 MaskColor(针对 Visual Basic 6.0 用户)。
颜色处理的代码更改
下面的示例演示 Visual Basic 6.0 与 Visual Basic 2008 在编码方法方面的差异。
将颜色设置为系统颜色的代码更改
下面的代码设置窗体的 BackColor 来匹配用户为活动标题栏选择的颜色。
' Visual Basic 6.0
Me.BackColor = vbActiveTitleBar
' Visual Basic
Me.BackColor = System.Drawing.SystemColors.ActiveCaption
将颜色设置为 Visual Basic 6.0 值的代码更改
下面的示例将 TextBox 控件的 BackColor 属性设置为匹配 Visual Basic 6.0 颜色选取器中最亮的绿色 (&H00C0FFC0)。
' Visual Basic 6.0
textBox1.Text = &H00C0FFC0
' Visual Basic
TextBox1.BackColor = System.Drawing.ColorTranslator.FromOle(&HC0FFC0)
常量等效项
下表列出了 Visual Basic 6.0 常量及其 Visual Basic 2008 等效项。
颜色常数等效项
| Visual Basic 6.0 | Visual Basic 2005 等效项 | 
|---|---|
| vbBlack | |
| vbRed | |
| vbGreen | |
| vbYellow | |
| vbBlue | |
| vbMagenta | |
| vbCyan | |
| vbWhite | 
系统颜色常数等效项
| Visual Basic 6.0 | Visual Basic 2005 等效项 | 
|---|---|
| vb3DDKShadow | |
| vb3DFace | |
| vb3DHighlight | |
| vb3DLight | |
| vb3DShadow | |
| vbActiveBorder | |
| vbActiveTitleBar | |
| vbActiveTitleBarText | |
| vbApplicationWorkspace | |
| vbButtonFace | |
| vbButtonShadow | |
| vbButtonText | |
| vbDesktop | |
| vbGrayText | |
| vbHighlight | |
| vbHighlightText | |
| vbInactiveBorder | |
| vbInactiveCaptionText | |
| vbInactiveTitleBar | |
| vbInactiveTitleBarText | |
| vbInfoBackground | |
| vbInfoText | |
| vbMenuBar | |
| vbMenuText | |
| vbScrollBars | |
| vbTitleBarText | |
| vbWindowBackground | |
| vbWindowFrame | |
| vbWindowText | 
升级说明
在使用升级向导将 Visual Basic 6.0 应用程序升级到 Visual Basic 2008 时,会使用 FromOle 方法转换颜色。
升级之后,应搜索在运行时显式设置 BackColor 或 ForeColor 属性的任何代码。如果代码是为父级设置的,则应在设计时显式设置子控件的颜色,否则子控件将从父控件继承颜色。
任何使用 Palette、PaletteMode 或 MaskColor 属性的代码在 Visual Basic 2008 中都需要重新编写。
请参见
概念
MaskColor(针对 Visual Basic 6.0 用户)