我正在写一个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);
}
答案 0 :(得分:0)
我的问题是事件没有意识到它已被处理。我需要做的就是:
e.Handled = true;
我的问题消失了。