我曾尝试使用不同的选项更改按钮背景颜色,结果改变了外观类别中的BackColor
属性。然后我将其更改回默认值Control
,但它仍与其他按钮不同:
我已尝试构建项目并重新启动Visual Studio,但这没有帮助。
我知道我可以拖动另一个按钮并复制/粘贴代码,但是首先是什么原因导致这种情况,以及如何正确修复它?
我曾尝试使用不同的选项更改按钮背景颜色,结果改变了外观类别中的BackColor
属性。然后我将其更改回默认值Control
,但它仍与其他按钮不同:
我已尝试构建项目并重新启动Visual Studio,但这没有帮助。
我知道我可以拖动另一个按钮并复制/粘贴代码,但是首先是什么原因导致这种情况,以及如何正确修复它?
BackColor
属性默认是环境属性,意味着它继承其父控件的值。当您将其显式设置为特定值时,它会覆盖环境属性并强制使用该特定值。default(Color)
来通过代码实现。myButton.BackColor = default(Color);
你还需要将 UseVisualStyleBackColor
属性重新设置为 true
,因为每当更改 BackColor
属性以支持自定义背景颜色时,它会自动设置为 false
。
或者,你可以告诉 WinForms 完全忽略这样的自定义属性,并要求 Windows 绘制按钮控件。这可以通过将 FlatStyle
属性设置为 FlatStyle.System
来实现。
同样,这可以在设计器中或通过代码完成。这不仅可以防止你改变背景颜色等无聊的事情,从而创建丑陋的控件,而且还可以将 Win32 按钮控件的本机行为恢复到你的 WinForms 应用程序中,包括悬停时的微妙 Aero 渐隐效果。
我不知道为什么这不是默认设置。你应该需要特别请求才能获得丑陋和非标准的控件。那不应该自动发生。我只能假设这是 VB 6 程序员的让步,他们多年来一直可以制作各种丑陋的控件。
button1.ResetBackColor()
,但你仍然需要设置 button1.UseVisualStyleBackColor = true
。 - Anlo当您更改默认的背景颜色时,它会将UseVisualStyleBackColor
属性翻转为false。
只需将其更改为true,您就可以完成设置!
要恢复按钮的默认背景颜色,请使用以下方法:
Button1.BackColor = SystemColors.ButtonFace
Button1.UseVisualStyleBackColor = True
UseVisualStyleBackColor = true;
就足够了。 - Eyal Gerber要将按钮的默认背景和前景恢复为原样,请使用以下代码:
Button1.BackColor = SystemColors.ButtonFace;
Button1.ForeColor = default(Color);
Button1.UseVisualStyleBackColor = true;
我的经验:
CommandButton1.BackColor = vbButtonFace
Button1.BackColor = Color.FromKnownColor(KnownColor.Control)
FromKnowColor
访问系统颜色,非常简单。Button1.BackColor = Color.Gainsboro
myButton.BackColor = default(Color);
tmpButtonCtrl.BackColor = DefaultBackColor
tmpButtonCtrl.ForeColor = DefaultForeColor
tmpButtonCtrl.UseVisualStyleBackColor = True
.NET框架4.5
VB.Net视觉工作室2013