我正在尝试按钮背景颜色的不同选项,并最终更改BackColor
了外观类别中的属性。然后我将它改回默认状态,即Control
,但它看起来仍然与其他按钮不同:
我已经尝试构建项目并重新启动 Visual Studio,但它没有帮助。
我知道我可以拖动另一个按钮并复制/粘贴代码,但首先是什么导致了这种情况以及如何正确修复它?
我正在尝试按钮背景颜色的不同选项,并最终更改BackColor
了外观类别中的属性。然后我将它改回默认状态,即Control
,但它看起来仍然与其他按钮不同:
我已经尝试构建项目并重新启动 Visual Studio,但它没有帮助。
我知道我可以拖动另一个按钮并复制/粘贴代码,但首先是什么导致了这种情况以及如何正确修复它?
默认情况下,该BackColor
属性是环境属性,这意味着它从其父控件继承其值。当您将其显式设置为特定值时,它会覆盖环境性质并强制它使用该特定值。
标准的 Windows 按钮控件不支持自定义颜色,因此 WinForms 实际上会自定义绘制控件以允许设计者覆盖其颜色。这样,如果你想要一个丑陋的绿色或红色按钮,你可以这样做。
这里发生的情况是您已经为按钮控件有效地设置了自定义背景颜色(您将其设置为 3D 控件的背景颜色,但它也可以很容易地设置为紫色),这迫使 WinForms 自定义绘制控件并用您指定的颜色绘制其背景。这就是赋予它“平坦”外观的原因 - 背景颜色现在使用单一自定义颜色绘制,而不是使用默认的渐变效果。在 Windows Classic(Aero 之前)主题下,它不会那么明显,因为按钮实际上是用平面 3D 控制颜色绘制的。但是 Aero 添加了渐变和其他“热”效果,这使得它像拇指酸痛一样突出。
要清除您设置的值并恢复属性的环境特性,您可以在“属性”窗口中右键单击该属性,然后选择“重置”。您也可以通过代码将属性设置为default(Color)
:
myButton.BackColor = default(Color);
您还需要将UseVisualStyleBackColor
属性设置回,每当更改属性以支持自定义背景颜色时true
,它都会自动设置为。false
BackColor
或者,您可以告诉 WinForms 完全忽略这样的自定义属性,并要求 Windows 绘制按钮控件。通过将FlatStyle
属性设置为 来做到这一点FlatStyle.System
。
同样,这可以在设计器中或通过代码完成。这不仅可以防止您更改背景颜色等愚蠢的东西,创建一个丑陋的控件,而且还可以将 Win32 按钮控件的本机行为恢复到您的 WinForms 应用程序,包括悬停时微妙的 Aero 淡入淡出效果。
我不知道为什么这不是默认设置。您应该提出特殊要求才能获得丑陋和非标准的控件。这不应该只是自动发生。我只能假设这是对 VB 6 程序员的让步,他们多年来一直能够制作各种丑陋的控件。
当您更改默认背景颜色时,它会将UseVisualStyleBackColor
属性翻转为 false。
只需将其更改回 true,您就应该设置好了!
要恢复按钮的默认背景颜色,请使用;
Button1.BackColor = SystemColors.ButtonFace
Button1.UseVisualStyleBackColor = True
什么对我有用:
CommandButton1.BackColor = vbButtonFace
要将默认背景和前景恢复为按钮,请使用:
Button1.BackColor = SystemColors.ButtonFace;
Button1.ForeColor = default(Color);
Button1.UseVisualStyleBackColor = true;
Button1.BackColor = Color.FromKnownColor(KnownColor.Control)
使用FromKnowColor
访问系统颜色。真的就是这么简单。
Button1.BackColor = Color.Gainsboro
**请使用这个**
myButton.BackColor = default(Color);
参考您的问题标题“如何重置为默认按钮背景颜色?” ,我通过以下方式解决了我的问题:
创建另一个按钮,比如说ButtonFoo
,并将其设置为不可见,
ButtonFoo.visible = False
您可以使用此按钮获取其颜色(因为它是默认颜色)以重置您的另一个按钮颜色,例如,
ButtonChangedColor.BackColor = ButtonFoo.BackColor
你去吧;颜色恢复为默认值:)
在 Winforms 中,默认颜色是 Control。您可以从 VS 的属性窗格中设置它。
PropertyName 是 BackColor 并且您想要的颜色在 System Colors -> Control
tmpButtonCtrl.BackColor = DefaultBackColor
tmpButtonCtrl.ForeColor = DefaultForeColor
tmpButtonCtrl.UseVisualStyleBackColor = True
.NET 框架 4.5
VB.Net Visual Studio 2013