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
设置为,false
当BackColor
属性更改为支持自定义背景颜色时,该属性会自动设置为.
或者,您可以告诉WinForms完全忽略这样的自定义属性,并要求Windows绘制按钮控件.通过将FlatStyle
属性设置为来执行此操作FlatStyle.System
.
同样,这可以在设计者或通过代码完成.这不仅会阻止你改变背景颜色等愚蠢的东西,创建一个可怕的丑陋控件,而且还会将Win32按钮控件的原生行为恢复到你的WinForms应用程序,包括悬停时微妙的Aero淡入淡出效果.
我不知道为什么这不是默认值.你应该特别要求获得丑陋和非标准的控件.这不应该只是自动发生.我只能假设这是对VB 6程序员的让步,他们多年来一直能够制作各种丑陋的控件.
要恢复按钮的默认背景颜色,请使用;
Button1.BackColor = SystemColors.ButtonFace
Button1.UseVisualStyleBackColor = True
Run Code Online (Sandbox Code Playgroud)
小智 5
要恢复按钮的默认背景和前景,请使用:
Button1.BackColor = SystemColors.ButtonFace;
Button1.ForeColor = default(Color);
Button1.UseVisualStyleBackColor = true;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
75995 次 |
最近记录: |