2011-11-21 230 views
16

我有一个Windows窗体窗体上的按钮,当它被点击时,我改变背景颜色为Color.Yellow。当它再次点击时,我想将它恢复到原始的默认外观。还原C#Windows窗体backcolor

默认背景颜色是SystemColor.Control

当按钮被点击我第一次改变的唯一的事情就是

btn.Text = "ABC"; 
btn.BackColor = Color.Yellow; 

当它再次单击我做

btn.BackColor = SystemColors.Control 

新的背景不具有相同的阴影,因为它最初做任何点击之前。该按钮最初有一个不是纯色的背景,但有两个稍微不同的灰色阴影。最后的颜色最终变成了一片灰色。

我在Windows 7机器上测试这个。

截图:

Enter image description here

+1

你能后的截图?另外,你在运行什么操作系统版本? –

+4

您在问题中付出的更多努力,您将得到更好的答案,包括问题的屏幕截图。 – Nasreddine

+0

相关:* [如何重置为默认按钮BackColor?](http://stackoverflow.com/questions/10569200)* –

回答

22

试试这个:

if (button1.BackColor == Color.Yellow) 
{ 
    button1.BackColor = SystemColors.Control; 
    button1.UseVisualStyleBackColor = true; 
} 
else 
{ 
    button1.BackColor = Color.Yellow; 
} 
+0

宾果,工作感谢 – JonF

+0

+1良好的捕获我没有意识到这种方法 –

1

尝试使用btn.ResetBackColor()代替手动设置BackColor

+1

该函数不存在于winform按钮中(至少在.net 3.5 winform中) – JonF

+1

它确实存在,它只是不显示在intellisense中,因为它被标记为[EditorBrowsable(EditorBrowsableState.Never)] –

+1

@JonF根据[MSDN](http://msdn.microsoft.com/en-us/library /system.windows.forms.control.resetbackcolor.aspx)它存在,因为.Net 1.0 – Nasreddine

11

您还应该将UseVisualStyleBackColor设置为true。当您更改背景颜色时,此属性设置为false。

+2

+1这正是你需要解决你的问题。 –

1

这将恢复默认外观(在Windows 7测试,.NET 3.5):

btn.BackColor = System.Drawing.Color.Transparent;