C# 允许退格按钮在已验证的文本框中工作

C# 允许退格按钮在已验证的文本框中工作,c#,.net,winforms,C#,.net,Winforms,我有以下代码,只允许文本框中有字母: private void TextBox1_KeyPress(object sender, KeyPressEventArgs e) { Char pressedKey = e.KeyChar; if (Char.IsLetter(pressedKey)) { // Allow input. e.Handled = false } else e.Handled = true; } } 如何允许backspace键工作,因为它不允许我在键入后删

我有以下代码,只允许文本框中有字母:

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
  Char pressedKey = e.KeyChar;
  if (Char.IsLetter(pressedKey))
 {
// Allow input.
e.Handled = false
}
  else
e.Handled = true;
}
}

如何允许backspace键工作,因为它不允许我在键入后删除字符

您可以使用
Char.IsControl(…)
检查按下的键是否为控制字符,如下所示:

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!Char.IsLetter(e.KeyChar) && !Char.IsControl(e.KeyChar))
        e.Handled = true;
}
如果您特别需要只选中chars+Delete,请使用以下选项:

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!Char.IsLetter(e.KeyChar) && e.KeyChar != (char)Keys.Back)
        e.Handled = true;
}

这是为那些使用VB.net的人准备的。有一种我从未遇到过的奇怪的转变,我花了一段时间才弄明白

这只允许数字、字母、退格和空格

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
    e.Handled = e.KeyChar <> ChrW(Keys.Back) And Not Char.IsLetter(e.KeyChar) And Not Char.IsDigit(e.KeyChar) And Not Char.IsSeparator(e.KeyChar)
End Sub
Private Sub TextBox1\u KeyPress(发送者作为对象,e作为KeyPressEventArgs)处理TextBox1.KeyPress
e、 Handled=e.KeyChar ChrW(Keys.Back)和Not Char.isliter(e.KeyChar)和Not Char.IsDigit(e.KeyChar)和Not Char.IsSeparator(e.KeyChar)
端接头

这有帮助吗?也许这太模糊了,使用
Char.IsControl(e.KeyChar)
允许您输入backspace并移动carret(我猜您也希望允许您的用户移动光标)。如果你真的只想允许退格,根据那篇文章,你需要
If(e.KeyChar==(char)8)