Color Handling for Visual Basic 6.0 Users
This topic compares color handling in Visual Basic 6.0 with equivalents in Visual Basic 2008.
Working with colors in Visual Basic 2008 is similar to working with colors in Visual Basic 6.0; however, there are a few conceptual differences that you need to know. In addition, the constants used to specify colors in Visual Basic 6.0 are replaced by new color enumerations in Visual Basic 2008.
Conceptual Differences
In Visual Basic 6.0, colors were represented by a value of type Long; in Visual Basic 2008 colors are of type Color. In Visual Basic 6.0, constants were provided for eight standard colors; in Visual Basic 2008 there are more than 100 named colors.
Tip
To find an equivalent value for a Visual Basic 6.0 color that is not a standard color, you can use the ColorTranslator class and pass it the Long value of the Visual Basic 6.0 color.
Color Constants
In Visual Basic 6.0, constants were provided for system colors that could be used to map a color to the user's system preferences. In Visual Basic 2008, the system colors are of type SystemColors.
BackColor and ForeColor Properties
In Visual Basic 6.0, the BackColor and ForeColor properties of a control had to be explicitly set at design time or at run time; colors could not be inherited. In Visual Basic 2008, unless a color is explicitly set at design time or at run time, it will inherit the color setting of its parent. For more information, see Color Behavior for Visual Basic 6.0 Users.
Palette and PaletteMode Properties
In Visual Basic 6.0, the Palette and PaletteMode properties of a form were used to control the set of colors to be used when displaying images on a 256-color display. Visual Basic 2008 does not support the Palette or PaletteMode properties. For more information, see Palettes for Visual Basic 6.0 Users.
MaskColor Property
The Visual Basic 6.0 MaskColor property no longer exists for the CheckBox, Button, and RadioButton controls. You can emulate the MaskColor property by using the graphics methods. For more information, see MaskColor for Visual Basic 6.0 Users.
Code Changes for Color Handling
The following examples illustrate the differences in coding techniques between Visual Basic 6.0 and Visual Basic 2008.
Code Changes for Setting a Color to a System Color
The following code sets the BackColor of a form to match the user-selected color for the active title bar.
' Visual Basic 6.0
Me.BackColor = vbActiveTitleBar
' Visual BasicMe.BackColor = System.Drawing.SystemColors.ActiveCaption
Code Changes for Setting a Color to a Visual Basic 6.0 Value
The following example sets the BackColor property of a TextBox control to match the lightest green (&H00C0FFC0) from the Visual Basic 6.0 color picker.
' Visual Basic 6.0
textBox1.Text = &H00C0FFC0
' Visual Basic
TextBox1.BackColor = System.Drawing.ColorTranslator.FromOle(&HC0FFC0)
Constant Equivalencies
The following tables list Visual Basic 6.0 constants and their Visual Basic 2008 equivalents.
Color Constant Equivalents
Visual Basic 6.0 |
Visual Basic 2005 Equivalent |
---|---|
vbBlack |
|
vbRed |
|
vbGreen |
|
vbYellow |
|
vbBlue |
|
vbMagenta |
|
vbCyan |
|
vbWhite |
System Color Constant Equivalents
Visual Basic 6.0 |
Visual Basic 2005 Equivalent |
---|---|
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 |
Upgrade Notes
When a Visual Basic 6.0 application is upgraded to Visual Basic 2008 using the upgrade wizard, colors are converted using the FromOle method.
After upgrade you should search for any code that explicitly sets the BackColor or ForeColor property at run time. If it is being set for a parent, explicitly set the color of the child controls at design time, otherwise the child controls will inherit the colors from the parent.
Any code that used the Palette, PaletteMode, or MaskColor properties will need to be rewritten in Visual Basic 2008.
See Also
Concepts
Color Behavior for Visual Basic 6.0 Users
Palettes for Visual Basic 6.0 Users
MaskColor for Visual Basic 6.0 Users