I’m getting some inconsistent behavior when I disable certain Button controls in my VS2008 Winforms project.
When I set Enabled = false, the buttons are disabled, but the Text of some (though not all) of the buttons stays black.
I want all buttons to show grey text when disabled – this makes it much easier for the user to see that a button is disabled.
Seems more likely to happen if button is placed in a GroupBox, but I’m not sure this is always the case.
I’m guessing that some combination of properties of the Button, and/or those of the Form or GroupBox containing it are causing this, but I can’t see any pattern that makes sense.
Edit: We have our own look and feel, and are setting the BackColor of the containing Form to a different color.
Can anyone explain why this might be happening?
Problem was because the Form’s BackColor was set to a different color.
Some Googling revealed that many others have encountered this. The proposed solutions were very complex – subclassing your own button controls and overriding OnPaint, etc.
But it turns out there is a simple fix…
When you add the buttons to the form, the button’s BackColor property will be set to the same value as the Form’s BackColor, although it will not display that way either at design or run time.
If you set the button’s BackColor property to System -> ControlLight, it will fix the problem – the disabled buttons now look disabled.
Note that there’s a strange quirk when you reset the BackColor – the UseVisualStyleBackColor property will change from True to False. But this seems to have no effect, and can be changed back to True without affecting the appearance in any way.