旧文本框值未被覆盖或清除

时间:2017-05-15 02:55:32

标签: c# wpf textbox

我正在写一个WPF程序,我试图在文本框中输入一个必须是xxx-xxx-xxxx格式的电话号码。我有一个按键事件,它解析新输入并确保其正确,将新数字或“ - ”值添加到文本框并返回以等待下一次按键。我的问题是:

文本框不显示任何内容

按键事件编号5

textBox解析

调用textBox.Text =“5”;

退出事件处理

文本框显示55,光标位于5s之间

现在我很确定我知道该框正在更新,但实际输入的文本没有被重置。如何删除击键,以便文本框仅显示我设置的内容?

感谢您的时间。

编辑:如果它有帮助,这是当前的代码。

private void PhoneNumberBox_KeyDown(object sender, KeyEventArgs e)
    {
        String keyString = e.Key.ToString();
        char keyPress = 'x';

        if (keyString.Length == 2 && keyString[0] == 'D')
            keyPress = keyString[1];


        TextBox textBox = sender as TextBox;

        if ((keyPress > 47 && keyPress < 58) || keyPress == '-')
        {
            int length = _textBoxText.Length;

            switch (length)
            {
                case 0:
                case 1:
                case 2:
                case 4:
                case 5:
                case 6:
                case 8:
                case 9:
                case 10:
                case 11:
                    {
                        if (keyPress != '-')
                            _textBoxText += keyPress;
                        break;
                    }
                case 3:
                case 7:
                    {
                        if (keyPress == '-')
                            _textBoxText += keyPress;
                        break;
                    }
            }
            textBox.Clear();

            textBox.Text = _textBoxText;
        }
        else
            Invalid_Entry(textBox);
    }

1 个答案:

答案 0 :(得分:0)

我的问题是事件没有意识到它已被处理。我需要做的就是:

e.Handled = true;

我的问题消失了。