如何重置为默认按钮BackColor?

Den*_*sev 36 .net button backcolor visual-studio winforms

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

按钮截图

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

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

Cod*_*ray 68

BackColor默认情况下,该属性是一个环境属性,这意味着它从其父控件继承其值.当您将其明确设置为特定值时,它会覆盖环境特性并强制它使用该特定值.

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

这里发生的是你有效地为按钮控件设置了一个自定义背景颜色(你将它设置为3D控件的背景颜色,但它可能很容易变成紫色),并且强制WinForms自定义绘制控件并用指定的颜色绘制背景.这就是赋予它"平坦"外观的原因 - 背景颜色现在用一种自定义颜色绘制,而不是使用默认的渐变效果.它在Windows经典(pre-Aero)主题下并不明显,因为按钮实际上用平面3D控件颜色绘制的.但是Aero增加了渐变和其他"热"效果,这使得它像拇指一样疼痛.

要清除已设置的值并恢复属性的环境特性,可以在"属性"窗口中右键单击属性,然后选择"重置".您也可以通过将属性设置为以下代码来执行此操作default(Color):

myButton.BackColor = default(Color);
Run Code Online (Sandbox Code Playgroud)

您还需要将UseVisualStyleBackColor属性true设置为,falseBackColor属性更改为支持自定义背景颜色时,该属性会自动设置为.

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

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

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

  • @PeterMortensen:`New Color()`为我工作. (3认同)
  • 现在,你也可以调用`button1.ResetBackColor()`方法,但你仍然需要设置`button1.UseVisualStyleBackColor = true`。 (2认同)

小智 13

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

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


Muh*_*qib 9

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

Button1.BackColor = SystemColors.ButtonFace
Button1.UseVisualStyleBackColor = True
Run Code Online (Sandbox Code Playgroud)

  • UseVisualStyleBackColor = true 足以让我让它工作。 (2认同)

小智 5

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

Button1.BackColor = SystemColors.ButtonFace;
Button1.ForeColor = default(Color);
Button1.UseVisualStyleBackColor = true;
Run Code Online (Sandbox Code Playgroud)