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

I like to use !Char.IsControl(e.KeyChar) so that all the "control" characters like the backspace key and clipboard keyboard shortcuts are exempted.

If you just want to check for backspace, you can probably get away with:

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

私は次の 2 つのセグメントをよく使用します。

これは、テキストボックスを整数のみに制限し、コントロールキーを許可するためのものです:

if (Char.IsDigit(e.KeyChar)) return;
if (Char.IsControl(e.KeyChar)) return;
e.Handled = true;

これは、テキストボックスを double に制限し、1 つの '.' を許可するためのものです。のみ、およびコントロール キーを許可します。

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 に答える
1

ドキュメントから:

KeyPress イベントは、文字以外のキーでは発生しません。ただし、文字以外のキーは KeyDown イベントと KeyUp イベントを発生させます。

于 2009-07-28T03:17:17.363 に答える
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 に答える