29

这是我的代码:

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

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

4

9 回答 9

38

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

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

if (e.KeyChar == (char)8 && ...)
于 2009-07-28T02:59:12.077 回答
20

我经常使用以下两个部分:

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

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;
于 2012-09-22T00:45:37.630 回答
7

您必须在句子中添加 !(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;
            }
        }
于 2016-11-21T23:17:36.763 回答
3

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

private void txtAdd_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Back)
    {
        e.SuppressKeyPress = true;
    }
}
于 2013-08-05T16:07:38.693 回答
3

对于您的问题,请在按下退格键时尝试此操作

e.KeyChar == ((char)Keys.Back)
于 2020-02-21T17:23:59.100 回答
1

从文档中:

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

于 2009-07-28T03:17:17.363 回答
0

This Might Help You

if(Keys.KeyCode==Keys.Back){
   e.Handled =true;
 }
于 2021-03-25T10:00:04.467 回答
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;
     }
  }
于 2015-08-11T05:33:25.823 回答
-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));
    }
}
于 2015-02-08T21:21:34.200 回答