16

キーが?の文字/数字(A-Z0-9)であるかどうかを判断する方法はありKeyEventArgsますか?それとも自分で作る必要がありますか?e.KeyCodeで方法を見つけましたが、それは正確ですか?

if(((e.KeyCode >= Keys.A       && e.KeyCode <= Keys.Z )
 || (e.KeyCode >= Keys.D0      && e.KeyCode <= Keys.D9 )
 || (e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9))
4

4 に答える 4

30

イベント引数のchar.IsLetterOrDigit()メソッドを使用できます。KeyCode

bool isLetterOrDigit = char.IsLetterOrDigit((char) keyEventArgs.KeyCode);
于 2011-03-13T23:40:31.983 に答える
9

Char.IsNumber()およびChar.IsLetter()

于 2011-03-13T23:37:36.773 に答える
8

WPFでは?KeyDownの代わりにPreviewTextInputまたはTextInputイベントを使用する

于 2011-05-03T16:45:07.583 に答える
0

Char.IsLetter()は、アルファベット文字として扱われたOEMキーコードの一部を受け入れます。

私の場合は、キーボード(チルダ)を入力したときに、このキーコードがOEM3に返されました。

値(チルダ)を調べたところ、

「192'A'」

しかし、実際のタイピング' A 'は

「65'A'」

その結果、両方ともChar.IsLetter()をTrueとして渡しました。

これを避けるために、私は以下のコードを置きます。

private bool IsAlphabetOrDigit(System.Windows.Forms.KeyEventArgs e)
{
    var keyCode = (char)e.KeyCode;
    if ( false == char.IsNumber( keyCode ) &&  false == ((keyCode >= 'a' && keyCode <= 'z') || (keyCode >= 'A' && keyCode <= 'Z')))
    {
        return false;
    }

    return true;
}
于 2020-08-14T05:19:48.380 に答える