-1

我有一个文本框,它不允许用户输入“[”和“]”字符。但是,我想将文本设置为默认包含“[”和“]”的值。我该怎么办?这是我的代码:

TextBox txtEdit = new TextBox();
txtEdit.TextChanged += txtEdit_TextChanged;
txtEdit.Text = "[Test]";

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
    if ((sender as TextBox).Text.Contains("[") || (sender as TextBox).Text.Contains("]"))
    {
        MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
        (sender as TextBox).Text = "";
    }
}
4

4 回答 4

1

更改属性后放置TextChanged事件Text

TextBox txtEdit = new TextBox();
txtEdit.TextChanged += txtEdit_TextChanged;

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
    if (comboBoxYou.Text == txtEdit.Text) 
    {
        return;
    }
    else if ((sender as TextBox).Text.Contains("[") || (sender as TextBox).Text.Contains("]"))
    {
        MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
        (sender as TextBox).Text = "";
    }
}
于 2013-03-20T10:51:52.047 回答
1

我会keydown为文本框设置一个事件。

如果您不希望用户输入 '[' 和 ']' 字符,则读取关键字符并设置e.Handled = true它是否与您不想要的字符匹配。

于 2013-03-20T11:02:20.240 回答
0

如果那是你想要的。

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
string a = (sender as TextBox).Text.substing(0,1).subsctring;
a = a.Remove(0, 1);
            a = a.Remove(a.Length - 1, 1);
            if (a.Contains('[') || a.Contains(']') )
            {
                MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            (sender as TextBox).Text = "[" + a.Replace("[", "").Replace("]", "") + "]";

}
于 2013-03-20T11:31:08.673 回答
0

Toon Casteele 的答案是一个很好的解决方案。否则,请尝试在表单中添加一个布尔值,当用户选择一个值时,将其设置为 true,并检查 TextChanged 事件中的值是否为 true。

private bool IsSelectedItemText; //set it to true when an item is selected

然后进行以下检查:

if(!IsSelectedItemText)
    //Check for square brackets
else
    //Add text from item

此外,这与问题没有直接关系,但我强烈建议您只投射一次“发件人”对象。完成后,代码如下所示:

private void txtEdit_TextChanged(object sender, TextChangedEventArgs e)
{
    TextBox tb = sender as TextBox;

    if(!IsSelectedItemText)
    {            
        if (tb.Text.Contains("[") || tb.Text.Contains("]"))
        {
            MessageBox.Show("Cannot enter '[' or ']' characters!", "", MessageBoxButton.OK, MessageBoxImage.Information);
            tb.Text = "";
        }
    }
    else
    {
        //Set text from selected item
    }

    IsSelectedItemText = false;
}

请记住在选择项目时将布尔变量设置为“真”。

于 2013-03-20T10:55:51.727 回答