如何在按键事件中接受退格键?
这是我的代码:
private void txtAdd_KeyPress(object sender, KeyPressEventArgs e) { if (!(char.IsLetter(e.KeyChar)) && !(char.IsNumber(e.KeyChar)) && !(char.IsWhiteSpace(e.KeyChar))) { e.Handled = true; } }
它允许我输入字母,数字和空格,但它不允许我做退格。 请帮我。
我喜欢用!
Char.IsControl (e.KeyChar)使得所有“控制”字符(如退格键和剪贴板键盘快捷键)都可以免除。
如果你只是想检查退格,你可能会逃脱:
if (e.KeyChar == (char)8 && ...)
我使用以下两个段:
这个用于将文本框限制为仅整数,但允许控制键:
if (Char.IsDigit(e.KeyChar)) return; if (Char.IsControl(e.KeyChar)) return; e.Handled = true;
这个用于限制文本框加倍,允许一个’。’ 只有,并允许控制键:
if (Char.IsDigit(e.KeyChar)) return; if (Char.IsControl(e.KeyChar)) return; if ((e.KeyChar == '.') && ((sender as TextBox).Text.Contains('.') == false)) return; if ((e.KeyChar == '.') && ((sender as TextBox).SelectionLength == (sender as TextBox).TextLength)) return; e.Handled = true;
你必须在你的句子中添加!(char.IsControl(e.KeyChar)),就是这样。
private void txtNombre_KeyPress(object sender, KeyPressEventArgs e) { if (!(char.IsLetter(e.KeyChar)) && !(char.IsNumber(e.KeyChar)) && !(char.IsControl(e.KeyChar)) && !(char.IsWhiteSpace(e.KeyChar))) { e.Handled = true; } }
KeyPress事件不会引发退格键。 所以你需要在KeyDown或KeyUp事件中捕获它并设置SuppressKeyPress属性为true以防止退格键更改文本框中的文本:
private void txtAdd_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Back) { e.SuppressKeyPress = true; } }
从文档:
非字符键不会引发KeyPress事件; 但是,非字符键会引发KeyDown和KeyUp事件。
private void KeyPressNameSurname(object sender, KeyPressEventArgs e) { if (char.IsPunctuation(e.KeyChar) || char.IsSymbol(e.KeyChar) || char.IsDigit(e.KeyChar) ) { e.Handled = true; myTextBox.Text = "Not Valid"; myTextBox.Visible = true; } else { myTextBox.Visible = false; } }
private void Keypressusername(object sender, KeyPressEventArgs e) { e.Handled = !(char.IsLetter(e.KeyChar)); if (char.IsControl(e.KeyChar)) { e.Handled = !(char.IsControl(e.KeyChar)); } if (char.IsWhiteSpace(e.KeyChar)) { e.Handled = !(char.IsWhiteSpace(e.KeyChar)); } }