Color Behavior for Visual Basic 6.0 Users
The ForeColor and BackColor properties of controls behave differently in Visual Basic 6.0 compared to Visual Basic 2008.
Conceptual Differences
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 and colors could not be inherited. In Visual Basic 2008, unless a color is explicitly set at design time or at run time, it inherits the color setting of its parent.
Code Changes for Color Behavior
The following example of a form with two CommandButton controls, Command1 and Command2, demonstrates the differences in behavior.
' Visual Basic 6.0
' Command1's BackColor is left at its default (gray).
' Command2's BackColor is explicitly set.
Command2.BackColor = vbBlack
' Explicitly set the BackColor of the form.
Form1.BackColor = vbRed
After running the above code, Command1's BackColor is still the default (gray), and Command2's BackColor is black.
The following example shows the behavior in Visual Basic 2008. In Visual Basic 2008, CommandButton controls are replaced by Button controls.
' Visual Basic' Command1's BackColor is left at its default (gray).' Command2's BackColor is explicitly set.
Command2.BackColor = System.Drawing.Color.Black
' Explicitly set the BackColor of the form.Me.BackColor = System.Drawing.Color.Red
After running the above code, Command1's BackColor is red and Command2's BackColor is black. Because the Command1's BackColor was not explicitly set, red is inherited from the form.
Note
This applies for any parent, not just for forms. If the Button was contained in a Panel control within the form, changing the color of either the panel or the form would change the color of the Button.
Upgrade Notes
When a Visual Basic 6.0 application is upgraded to Visual Basic 2008, the upgrade wizard has no way to determine if colors will be inherited. After upgrading, search for any code that explicitly sets the BackColor or ForeColor property at run time. If it is set for a parent, explicitly set the color of the child controls at design time.
See Also
Reference
Color Handling for Visual Basic 6.0 Users