C#如何改变按钮的背景颜色?

39

如何在按下另一个按钮后更改按钮的背景颜色?

目前我拥有的:

ButtonToday.Background = Color.Red;

但它没有起作用。


2
Winform / WPF / Silverlight / ASP.NET? - Felice Pollano
1
此代码为C#语言,翻译为中文为:this.Button1.BackgroundColor = 新颜色 - Bobby
你尝试了哪些代码?你在哪个平台上?是什么让你觉得你缺少一个命名空间? - Dan Puzey
这是一个使用Visual Studio 2010的WPF。 - The Woo
1
“而它不起作用”并不是您所面临问题的足够详细的描述。 - O. R. Mapper
7个回答

81

WinForm:

private void button1_Click(object sender, EventArgs e)
{
   button2.BackColor = Color.Red;
}

WPF:

private void button1_Click(object sender, RoutedEventArgs e)
{
   button2.Background = Brushes.Blue;
}

我遇到的问题是'BackColor'出现了错误——在Visual Studio中以红色下划线标出。 - The Woo
4
请确保你使用的是System.Windows.Media.Brushes,而不是System.Drawing.Brush。参考链接:http://msdn.microsoft.com/zh-cn/library/system.windows.media.brushes.aspx - Simon_Weaver
@Feroc 有没有办法在按钮按下时设置背景颜色? - CBC_NS
1
@CBC_NS:我猜你需要在MouseDown和MouseUp事件中更改颜色。 - Core_F

16

在WPF中,背景不是一个Color,而是一个Brush。因此,首先尝试这样做:

using System.Windows.Media;

// ....

ButtonToday.Background = new SolidColorBrush(Colors.Red);

更明智的做法是,您应该考虑在Xaml中完成此操作,而不是在代码中。


5

设置背景颜色的代码,使用 SolidColor

button.Background = new SolidColorBrush(Color.FromArgb(Avalue, rValue, gValue, bValue));

添加自定义颜色选项,而非系统颜色,是一个不错的选择。 - Anthony Griggs
对于那些像我一样不熟悉第一个重载的人...它代表Alpha值0到255,并确定背景的透明度,其中255是完全不透明的:https://msdn.microsoft.com/zh-cn/library/system.drawing.color.fromargb(v=vs.110).aspx - Anthony Griggs

2
// WPF

// Defined Color
button1.Background = Brushes.Green;

// Color from RGB
button2.Background = new SolidColorBrush(Color.FromArgb(255, 0, 255, 0));

1
我一开始在为WPF应用程序的控件设置颜色时遇到了麻烦。 它似乎默认不包括System.Windows.Media,但包括Windows.UI.Xaml.Media,其中有一些预设的颜色。 最终,我使用了以下代码行来使其正常工作:
grid.Background.SetValue(SolidColorBrush.ColorProperty, Windows.UI.Colors.CadetBlue);

你应该能够将grid.Background更改为大多数其他控件,然后将CadetBlue更改为它提供的任何其他颜色。

0

我怀疑这些是否都有效。 尝试: 首先在代码页开头导入命名空间,如下所示。

using System.Drawing;

然后在代码中。

Button4.BackColor = Color.LawnGreen;

希望有所帮助。

0
this.button2.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(190)))), ((int)(((byte)(149)))));

4
欢迎来到 Stack Overflow!请阅读[提问指南]。请勿发布仅包含代码的答案, [编辑] 帖子并说明为什么这可以解决问题。请记住,您不仅是在回答 OP 的问题,还要考虑到未来的读者,比如你自己。特别是当回答 9 年前的问题时。 - Adriaan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接