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 2005.
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 2005, 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 2005. In Visual Basic 2005, CommandButton controls are replaced bycontrols.
' Visual Basic 2005 ' 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'sis red and Command2's BackColor is black. Because the Command1's BackColor was not explicitly set, red is inherited from the form.
This applies for any parent, not just for forms. If the Button was contained in acontrol within the form, changing the color of either the panel or the form would change the color of the Button.
When a Visual Basic 6.0 application is upgraded to Visual Basic 2005, the upgrade wizard has no way to determine if colors will be inherited. After upgrading, search for any code that explicitly sets the BackColor orproperty at run time. If it is set for a parent, explicitly set the color of the child controls at design time.