210

How can I change the background and foreground colors of a WPF Textbox programmatically in C#?

8 Answers 8

380
textBox1.Background = Brushes.Blue;
textBox1.Foreground = Brushes.Yellow;

WPF Foreground and Background is of type System.Windows.Media.Brush. You can set another color like this:

using System.Windows.Media;

textBox1.Background = Brushes.White;
textBox1.Background = new SolidColorBrush(Colors.White);
textBox1.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0, 0));
textBox1.Background = System.Windows.SystemColors.MenuHighlightBrush;
Sign up to request clarification or add additional context in comments.

4 Comments

If we want to set a hex value to the color attribute , how it can be done??
You could use something like Brush brush = new SolidColorBrush( Color.FromRgb( r, g, b ) );
There is also the much prettier LinearGradientBrush :)
Be sure to include System.Windows.Media.
120

If you want to set the background using a hex color you could do this:

var bc = new BrushConverter();

myTextBox.Background = (Brush)bc.ConvertFrom("#FFXXXXXX");

Or you could set up a SolidColorBrush resource in XAML, and then use findResource in the code-behind:

<SolidColorBrush x:Key="BrushFFXXXXXX">#FF8D8A8A</SolidColorBrush>
myTextBox.Background = (Brush)Application.Current.MainWindow.FindResource("BrushFFXXXXXX");

2 Comments

It is much preferable to use (System.Windows.Media.Brush)Application.Current.FindResource("BrushFFXXXXX"); as your application will not throw a threading exception if it is upgraded to use multiple dispatcher threads in the future.
Where should <SolidColorBrush x:Key="BrushFFXXXXXX">#FF8D8A8A</SolidColorBrush> be declared? When I try do so inside <Window x:Class ... I get error: "The property 'Content' is set more than once"
24

I take it you are creating the TextBox in XAML?

In that case, you need to give the text box a name. Then in the code-behind you can then set the Background property using a variety of brushes. The simplest of which is the SolidColorBrush:

myTextBox.Background = new SolidColorBrush(Colors.White);

Comments

7

You can convert hex to RGB:

string ccode = "#00FFFF00";
int argb = Int32.Parse(ccode.Replace("#", ""), NumberStyles.HexNumber);
Color clr = Color.FromArgb(argb);

1 Comment

System.Windows.Media.Color FromArgb is accepting byte a, byte r, byte g, byte b, not int
6

You can use hex colors:

your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)

Comments

4

I know this has been answered in another SOF post. However, you could do this if you know the hexadecimal.

textBox1.Background = (SolidColorBrush)new BrushConverter().ConvertFromString("#082049");

Comments

1

Have you taken a look at Color.FromRgb?

Comments

0

BrushConverter bc = new BrushConverter();

textName.Background = (Brush)bc.ConvertFrom("#FF7BFF64");

buttonName.Foreground = new SolidColorBrush(Colors.Gray);

Reference Here https://www.it-mure.jp.net/ja/c%23/c%EF%BC%83%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7wpf%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E8%83%8C%E6%99%AF%E8%89%B2%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B/957683208/

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.