如何在按键事件中接受退格键?

这是我的代码:

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)); } }