我有一个方法可以为焦点上的文本框(Enter)
的背景着色 private void onEnter_ColourChange(object sender, EventArgs e)
{
this.BackColor = Color.White;
}
但是,这并不起作用。我检查了这个answer,但我得到了一个NullReferenceException。
基本上,我希望在文本框处于焦点时使用一种方法为多个文本框着色。有没有办法做到这一点?
答案 0 :(得分:1)
首先:TextBox只有属性Background而不是BackColor!
如果你想改变焦点TextBox的颜色,一个简单的方法是使用带触发器的Style。
<Window.Resources>
<Style TargetType="TextBox" x:Key="TextBoxFocusBackgroundStyle" BasedOn="{StaticResource {x:Type TextBox}}">
<Style.Triggers>
<Trigger Property="IsFocused" Value="true" >
<Setter Property="Background" Value="Brown" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
如您所见,Trigger监视属性IsFocused。如果TextBox获得了Focus(因此IsFocused更改为true),则Background将为棕色。
使用此样式:
<StackPanel>
<TextBox Text="Peter" Style="{StaticResource TextBoxFocusBackgroundStyle}"/>
<TextBox Text="Laszlo" Style="{StaticResource TextBoxFocusBackgroundStyle}"/>
<TextBox Text="Julia" Style="{StaticResource TextBoxFocusBackgroundStyle}"/>
<TextBox Text="Romeo" Style="{StaticResource TextBoxFocusBackgroundStyle}"/>
</StackPanel>
如果您已经有TextBox的样式,则应在BasedOn属性中使用该样式。