在TextBox中突出显示Text的方法不一致

时间:2014-06-24 19:00:43

标签: c# wpf textbox

目前我正在使用this方法突出显示TextBox中的文本,但它有时会起作用。

此代码必须验证输入的文本中是否包含空格。如果文本中有空格,则应警告用户,然后必须突出显示TextBox中的文本:

if (textBox.Text.Contains(" "))
{
    MessageBox.Show("Sorry, the value entered must not contain any spaces.", "Please enter a valid value", MessageBoxButton.OK, MessageBoxImage.Error);

    //Highlights incorrect text
    textBox.SelectionStart = 0;
    textBox.SelectionLength = textBox.Text.Length;
}

为什么这种方法不能一直为我工作,我该怎么做才能解决它?

1 个答案:

答案 0 :(得分:0)

当您选择当前时刻没有焦点的textBox长度时,可能会出现问题。

您可以尝试添加焦点检查吗?

if (textBox.Text.Contains(" "))
{
    MessageBox.Show("Sorry, the value entered must not contain any spaces.", "Please enter a valid value", MessageBoxButton.OK, MessageBoxImage.Error);

    if(!textBox.Focused)
    {
      textBox.Focus();
    }

    //Highlights incorrect text
    textBox.SelectionStart = 0;
    textBox.SelectionLength = textBox.Text.Length;
}

也可以使用textBox.SelectAll():

代替当前解决方案
if (textBox.Text.Contains(" "))
{
    textBox.SelectAll();
    MessageBox.Show("Sorry, the value entered must not contain any spaces.", "Please enter a valid value", MessageBoxButton.OK, MessageBoxImage.Error);

}