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

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

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

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

【问题讨论】:

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

标签: .net winforms visual-studio button backcolor


【解决方案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

              【讨论】:

              • 请通过添加更多解释来编辑您的答案,您也可以将您的代码放在缩进中,这样看起来会更好。
              猜你喜欢
              • 2014-11-03
              • 1970-01-01
              • 2013-06-26
              • 1970-01-01
              • 1970-01-01
              • 2013-10-26
              • 2020-02-17
              • 1970-01-01
              • 2016-05-24
              相关资源
              最近更新 更多