none
怎样让TextBox控件的某些字符显示不同的颜色,用于提示错误字符? RRS feed

  • 问题

  • 怎样让TextBox控件的某些字符显示不同的颜色,用于提示错误字符?

    例如一个TextBox的Text属性绑定的string类型的变量,内容是"12345678",我想让这个字符串下标3到6之间的字符串"4567",在Textbox中的区域中显示另外的颜色,但是不要覆盖掉字符,这样做的目的用于检查用户输入的是否正确,若不正确就把错误的区域的字符的背景色变成另一种背景色,或者是错误字符的字体变色,这个怎么做?




    2017年7月10日 8:57

答案

  • Hi,

    据我所知,你的要求TextBox做不到,想要给文本设置不同的颜色,建议使用RichTextBox, 如果你想要验证数据,那我建议你使用WPF自带的验证系统,参考如下:

    How to: Implement Binding Validation

    关于WPF的验证

    另外你也可以考虑使用渐变色来设置TextBox文本的颜色,但是效果不会很好。

       <TextBox Height="20" Width="200" Background="Azure" Text="12345678">
                <TextBox.Style>
                    <Style TargetType="TextBox">
                        <Setter Property="Foreground">
                            <Setter.Value>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                                    <GradientStop Offset="0.0" Color="Black"/>
                                    <GradientStop Offset="0.5" Color="Red"/>                             
                                    <GradientStop Offset="1" Color="Black"/>
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </TextBox.Style>
            </TextBox>

    Best Regards,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年7月11日 0:39
    版主