Reputation: 2436
I have a button on a Windows Forms form for which I change the background color to Color.Yellow
when it's clicked. When it's clicked again I want to restore it to the original default appearance.
The default backcolor is SystemColor.Control
.
When the button is clicked the first time the only thing I change is the
btn.Text = "ABC";
btn.BackColor = Color.Yellow;
When it's clicked again I do
btn.BackColor = SystemColors.Control
The new background does not have the same shading as it originally did before any clicks. The button originally had a background that was not a solid color, but was two slightly different shades of grey. The final color ends up being a solid shade of grey.
I'm testing this on a Windows 7 machine.
Screenshot:
Upvotes: 19
Views: 13869
Reputation: 11
This will restore the default look (tested on Windows 7, .net 3.5):
btn.BackColor = System.Drawing.Color.Transparent;
Upvotes: 1
Reputation: 5263
Try this:
if (button1.BackColor == Color.Yellow)
{
button1.BackColor = SystemColors.Control;
button1.UseVisualStyleBackColor = true;
}
else
{
button1.BackColor = Color.Yellow;
}
Upvotes: 26
Reputation: 183
You should also set UseVisualStyleBackColor to true. This property gets set to false when you change the backcolor.
Upvotes: 12
Reputation: 7522
Try using btn.ResetBackColor()
instead of manually setting the BackColor
.
Upvotes: 4