202 votes

Définir la couleur de fond d'une zone de texte WPF en code C#

Comment changer les couleurs d'arrière-plan et d'avant-plan d'une zone de texte WPF de manière programmatique en C# ?

369voto

Timbo Points 14117
textBox1.Background = Brushes.Blue;
textBox1.Foreground = Brushes.Yellow;

WPF Foreground et Background sont de type System.Windows.Media.Brush . Vous pouvez définir une autre couleur comme ceci :

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;

2 votes

Si nous voulons attribuer une valeur hexadécimale à l'attribut de couleur, comment faire ?

11 votes

Vous pourriez utiliser quelque chose comme Brush brush = new SolidColorBrush( Color.FromRgb( r, g, b ) ) ;

3 votes

Il y a aussi la bien plus jolie LinearGradientBrush :)

118voto

Danield Points 17720

Si vous souhaitez définir l'arrière-plan en utilisant une couleur hexagonale, vous pouvez le faire :

var bc = new BrushConverter();

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

Vous pouvez également configurer une ressource SolidColorBrush dans XAML, puis utiliser findResource dans le code-behind :

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

0 votes

Il est de loin préférable d'utiliser (System.Windows.Media.Brush)Application.Current.FindResource‌​("BrushFFXXXXX"); car votre application ne lancera pas d'exception de threading si elle est mise à niveau pour utiliser plusieurs threads de répartition à l'avenir.

0 votes

Où doit-on <SolidColorBrush x:Key="BrushFFXXXXXX">#FF8D8A8A</SolidColorBrush> être déclarée ? Lorsque j'essaie de le faire à l'intérieur de <Window x:Class ... J'obtiens une erreur : "La propriété 'Content' a été définie plus d'une fois".

24voto

James Hay Points 7830

Je suppose que vous créez la TextBox en XAML ?

Dans ce cas, vous devez donner un nom à la zone de texte. Ensuite, dans le code-behind, vous pouvez définir la propriété Background en utilisant diverses brosses. La plus simple d'entre elles est la SolidColorBrush :

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

6voto

Vous pouvez convertir les hexagones en RGB :

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

0 votes

System.Windows.Media.Color FromArgb accepte l'octet a, l'octet r, l'octet g, l'octet b, et non l'int.

2voto

Daniel Points 416

Avez-vous jeté un coup d'œil à Color.FromRgb ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X