如何重置为默认按钮背景色?
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
【讨论】:
请通过添加更多解释来编辑您的答案,您也可以将您的代码放在缩进中,这样看起来会更好。以上是关于如何重置为默认按钮背景色?的主要内容,如果未能解决你的问题,请参考以下文章