【问题标题】:C# Change A Button's Background ColorC# 更改按钮的背景颜色
【发布时间】:2011-06-26 20:05:17
【问题描述】:

一旦按下另一个按钮,按钮的背景颜色如何?

我现在拥有的是:

ButtonToday.Background = Color.Red;

它不起作用。

【问题讨论】:

  • Winform /WPF / SIlverlight/ASP.NET ?
  • this.Button1.BackgroundColor = newColor?
  • 你试过什么代码?你在哪个平台?是什么让您认为您缺少命名空间?
  • 这是一个使用 Visual Studio 2010 的 WPF。
  • 它不起作用。 对您所面临的问题的描述不够详细。

标签: c# wpf button background


【解决方案1】:

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 中带有红色下划线。
  • 确保您正在“使用” System.Windows.Media.Brushes 而不是 System.Drawing.Brush - (msdn.microsoft.com/en-us/library/…)
  • @Feroc 有没有办法在按住按钮时设置背景色?
  • @CBC_NS:我猜你需要更改 MouseDown 和 MouseUp 事件的颜色。
【解决方案2】:

在 WPF 中,背景不是Color,而是Brush。所以,先试试这个:

using System.Windows.Media;

// ....

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

不过,更明智的是,您可能应该考虑在 Xaml 而不是代码中执行此操作。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 添加自定义颜色与系统颜色的好选择。
    • 对于那些像我一样不熟悉第一个重载的人......它代表 Alpha 值 0 到 255 并确定 255 完全实心的背景透明度:msdn.microsoft.com/en-us/library/…
    【解决方案4】:

    起初我在为 WPF 应用程序控件设置颜色时遇到了麻烦。 它似乎默认不包括System.Windows.Media,但确实包括Windows.UI.Xaml.Media,它有一些预填充的颜色。

    我最终使用以下代码行来让它工作:

    grid.Background.SetValue(SolidColorBrush.ColorProperty, Windows.UI.Colors.CadetBlue);
    

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

    【讨论】:

      【解决方案5】:
      // WPF
      
      // Defined Color
      button1.Background = Brushes.Green;
      
      // Color from RGB
      button2.Background = new SolidColorBrush(Color.FromArgb(255, 0, 255, 0));
      

      【讨论】:

        【解决方案6】:

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

        using System.Drawing;
        

        然后在代码中。

        Button4.BackColor = Color.LawnGreen;
        

        希望对你有帮助。

        【讨论】:

          【解决方案7】:
          this.button2.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(29)))), ((int)(((byte)(190)))), ((int)(((byte)(149)))));
          

          【讨论】:

          • 欢迎来到 Stack Overflow!请阅读How to Ask。请勿发布仅代码的答案和edit 帖子以包含关于为什么这可以解决问题的解释。永远记住,您不仅要回答 OP,还要回答未来的读者,比如您自己。尤其是在回答 9 岁的问题时。