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

时间:2009-07-28 02:49:15

标签: 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;
    }
}

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

9 个答案:

答案 0 :(得分:32)

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

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

if (e.KeyChar == (char)8 && ...)

答案 1 :(得分:17)

我使用以下两个段:

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

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;

答案 2 :(得分: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;
            }
        }

答案 3 :(得分:3)

KeyPress事件不会引发退格键。所以你需要在KeyDown或KeyUp事件中捕获它并设置SuppressKeyPress属性为true以防止退格键更改文本框中的文本:

private void txtAdd_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Back)
    {
        e.SuppressKeyPress = true;
    }
}

答案 4 :(得分:1)

来自文档:

  

KeyPress事件不是由非字符键引发的;但是,非字符键确实会引发KeyDown和KeyUp事件。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

对于您的问题,请按回退键尝试此操作

e.KeyChar == ((char)Keys.Back)

答案 7 :(得分:0)

这可能对您有所帮助

if(Keys.KeyCode==Keys.Back){
   e.Handled =true;
 }

答案 8 :(得分:-1)

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