如何重置为默认按钮BackColor?

时间:2012-05-13 03:50:40

标签: .net winforms visual-studio button backcolor

我正在尝试使用按钮背景颜色的不同选项,最后更改了“外观”类别中的BackColor属性。然后我将其更改为默认情况下的Control,但它仍然与其他按钮不同:

Screenshot of buttons

我已经尝试构建项目并重新启动Visual Studio,但它没有帮助。

我知道我可以拖动另一个按钮并复制/粘贴代码,但是首先导致这种情况的原因是什么?如何正确修复它?

11 个答案:

答案 0 :(得分:65)

BackColor属性默认为环境属性,这意味着它从其父控件继承其值。当您将显式设置为特定值时,它会覆盖环境特性并强制它使用该特定值。

标准的Windows按钮控件不支持自定义颜色,因此WinForms实际上会自定义绘制控件以允许设计者覆盖其颜色。这样,如果你想要一个丑陋的绿色或红色按钮,你就可以做到。

这里发生的事情是你为按钮控件有效地设置了自定义背景颜色(你将它设置为3D控件的背景颜色,但它可能很容易变成紫色),这就迫使WinForms自定义绘制控件并使用指定的颜色绘制其背景。这就是赋予它“平坦”外观的原因 - 背景颜色现在用一种自定义颜色绘制,而不是使用默认的渐变效果。在Windows Classic(pre-Aero)主题下它不会那么引人注目,因为实际的按钮用平面3D控件颜色绘制。但是Aero增加了渐变和其他“热”效果,这使得它像拇指一样伸出来。

要清除您设置的值并恢复属性的环境特性,可以在属性窗口中右键单击属性,然后选择“重置”。您也可以通过将属性设置为default(Color)

来完成代码
myButton.BackColor = default(Color);

您还需要将UseVisualStyleBackColor属性设置回true,只要更改false属性以支持自定义背景颜色,该属性就会自动设置为BackColor

或者,您可以告诉WinForms完全忽略这样的自定义属性,并要求Windows绘制按钮控件。通过将FlatStyle属性设置为FlatStyle.System来执行此操作。

同样,这可以在设计师或通过代码完成。这不仅会阻止你改变背景颜色等愚蠢的东西,创建一个可怕的丑陋控件,而且它还会将Win32按钮控件的原生行为恢复到你的WinForms应用程序,包括悬停时微妙的Aero淡入淡出效果。

我不知道为什么这不是默认值。你应该特别要求获得丑陋和非标准的控件。这不应该只是自动发生。我只能假设这是对VB 6程序员的让步,他们多年来一直能够制作各种丑陋的控件。

答案 1 :(得分:13)

更改默认背景颜色时,会将UseVisualStyleBackColor属性翻转为false。

只需将其更改为true即可设置!

答案 2 :(得分:9)

要恢复按钮的默认背景颜色,请使用;

Button1.BackColor = SystemColors.ButtonFace
Button1.UseVisualStyleBackColor = True

答案 3 :(得分:3)

对我有用的是什么:

CommandButton1.BackColor = vbButtonFace

答案 4 :(得分:3)

npm run test

使用Button1.BackColor = Color.FromKnownColor(KnownColor.Control) 访问系统颜色。 这真的很简单。

答案 5 :(得分:3)

要将默认背景和前景恢复为按钮,请使用:

Button1.BackColor = SystemColors.ButtonFace;
Button1.ForeColor = default(Color);
Button1.UseVisualStyleBackColor = true;

答案 6 :(得分:1)

Button1.BackColor = Color.Gainsboro

答案 7 :(得分:0)

参考你的问题标题,"如何重置为默认按钮BackColor?" ,我通过以下方式解决了我的问题:

创建另一个按钮,例如ButtonFoo,并将其设置为不可见

ButtonFoo.visible = False

您可以使用此按钮获取其颜色(因为它是默认颜色)以重置其他按钮颜色,例如,

ButtonChangedColor.BackColor = ButtonFoo.BackColor

你走了;颜色恢复为默认值:)

答案 8 :(得分:0)

在Winforms中,默认颜色为Control。您可以在VS中的“属性”窗格中进行设置。

PropertyName是BackColor,您想要的颜色是系统颜色 - >控制

答案 9 :(得分:0)

**请使用此内容**

myButton.BackColor = default(Color);

答案 10 :(得分:0)

tmpButtonCtrl.BackColor = DefaultBackColor
tmpButtonCtrl.ForeColor = DefaultForeColor
tmpButtonCtrl.UseVisualStyleBackColor = True
.NET Framework 4.5
VB.Net Visual Studio 2013