如何重置为默认按钮背景色?

Posted

技术标签:

【中文标题】如何重置为默认按钮背景色?【英文标题】:How to reset to default button BackColor? 【发布时间】:2012-05-21 02:28:48 【问题描述】:

我尝试了按钮背景颜色的不同选项,最终更改了外观类别中的BackColor 属性。然后我将其改回默认状态,即Control,但它看起来仍然与其他按钮不同:

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

我知道我可以只拖动另一个按钮并复制/粘贴代码,但首先是什么导致了这个问题,我该如何正确解决它?

【问题讨论】:

如果在设计模式下更改,则只需转到 [back color] 属性(在设计模式下)并右键单击。您将获得一个恢复默认设置的菜单。 【参考方案1】:

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

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

这里发生的情况是,您有效地为按钮控件设置了自定义背景颜色(您将其设置为 3D 控件的背景颜色,但它也可以很容易地设置为紫色),这迫使 WinForms 自定义绘制控件并用您指定的颜色绘制其背景。这就是赋予它“平坦”外观的原因 - 背景颜色现在使用单一自定义颜色绘制,而不是使用默认的渐变效果。在 Windows 经典(Aero 之前)主题下,它不会那么明显,因为按钮实际上是 用平面 3D 控件颜色绘制的。但是 Aero 添加了渐变和其他“热”效果,这使得它像拇指酸痛一样突出。

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

myButton.BackColor = default(Color);

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

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

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

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

【讨论】:

default(Color)对应的VB.NET版本是多少? 现在也可以调用button1.ResetBackColor()方法,但还是需要设置button1.UseVisualStyleBackColor = true【参考方案2】:

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

只需将其改回 true 即可!

【讨论】:

【参考方案3】:

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

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

【讨论】:

UseVisualStyleBackColor = true 对我来说已经足够了。【参考方案4】:

什么对我有用:

CommandButton1.BackColor = vbButtonFace

【讨论】:

【参考方案5】:

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

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

【讨论】:

“SystemColors”不包含“ButtonFace”的定义 你在用记事本编程吗? 真正的程序员使用 vi :-)【参考方案6】:
Button1.BackColor = Color.FromKnownColor(KnownColor.Control)

使用FromKnowColor 访问系统颜色。 就是这么简单。

【讨论】:

【参考方案7】:
Button1.BackColor = Color.Gainsboro

【讨论】:

一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助。 太好了,这条评论有助于重置默认颜色的按钮【参考方案8】:

**请使用这个**

myButton.BackColor = default(Color);

【讨论】:

【参考方案9】:

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

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

ButtonFoo.visible = False

你可以使用这个按钮来获取它的颜色(因为它是默认颜色)来重置你的另一个按钮颜色,例如,

ButtonChangedColor.BackColor = ButtonFoo.BackColor

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

【讨论】:

【参考方案10】:

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

PropertyName 是 BackColor 并且你想要的颜色在 System Colors -> Control

【讨论】:

【参考方案11】:
tmpButtonCtrl.BackColor = DefaultBackColor
tmpButtonCtrl.ForeColor = DefaultForeColor
tmpButtonCtrl.UseVisualStyleBackColor = True

.NET 框架 4.5 VB.Net Visual Studio 2013

【讨论】:

请通过添加更多解释来编辑您的答案,您也可以将您的代码放在缩进中,这样看起来会更好。

以上是关于如何重置为默认按钮背景色?的主要内容,如果未能解决你的问题,请参考以下文章

VC++如何改变按钮背景色

如何更改MFC按钮的背景色

恢复 C# Windows 窗体背景色

使用CSS,如何在首页设置背景色不影响子页的背景色

iOS UIButton(按钮)点击改变背景色和标题颜色的简单实现

xshell如何设置字体和背景色颜色?