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

27 c# keypress

这是我的代码:

private void txtAdd_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!(char.IsLetter(e.KeyChar)) && !(char.IsNumber(e.KeyChar)) && !(char.IsWhiteSpace(e.KeyChar)))
    {
        e.Handled = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

它允许我输入字母,数字和空格,但它不允许我做退格.请帮我.

Mat*_*ton 34

我喜欢使用!Char.IsControl(e.KeyChar),以便免除所有"控制"字符,如退格键和剪贴板键盘快捷键.

如果你只是想检查退格,你可能会逃脱:

if (e.KeyChar == (char)8 && ...)
Run Code Online (Sandbox Code Playgroud)

  • 可能更好地使用''\ b'`而不是`(char)8`. (12认同)
  • @AlexHumphrey我认为更好的是`(char)Keys.Back` (9认同)

Wan*_*eer 18

我使用以下两个段:

这个用于将文本框限制为仅整数,但允许控制键:

if (Char.IsDigit(e.KeyChar)) return;
if (Char.IsControl(e.KeyChar)) return;
e.Handled = true;
Run Code Online (Sandbox Code Playgroud)

这个用于限制文本框加倍,允许一个'.' 只有,并允许控制键:

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;
Run Code Online (Sandbox Code Playgroud)


小智 5

你必须在你的句子中添加!(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;
            }
        }
Run Code Online (Sandbox Code Playgroud)