5

KeyDown イベントには、操作する KeyEventArgs があります。(特に) 次の 3 つのプロパティがあります。

  • e.KeyCode
  • e.KeyData
  • e.KeyValue

どれを何に使えばいいの?

4

4 に答える 4

12

編集:どういうわけか、有効な文字のチェックを含めるために質問を読み違えました。修正しましたか?それぞれの説明を追加しました。

  • KeyCodeは、ダウンしているキーのKeys列挙値です。
  • KeyDataは KeyCode と同じですが、SHIFT/CTRL/ALT キーと組み合わせます
  • KeyValueは、単に KeyCode の整​​数表現です

文字だけが必要な場合は、 KeyPress イベントを使用し、KeyPressEventArgsを使用することをお勧めします。KeyCharプロパティ。その後、 Char.IsLetterOrDigit()を使用して、有効な文字かどうかを確認できます。

または、 KeyEventArgs.KeyCodeを char にキャストしてから、Char.IsLetterOrDigit を使用することもできます。

于 2009-02-19T08:00:04.887 に答える
1

プロパティを使用して、ほとんどの操作の列挙KeyCodeをチェックすることをお勧めします。Keysただし、以下の基本的な違いのいくつかは、状況に応じてどちらが必要かをより適切に判断するのに役立つ場合があります.

違い:

  • KeyCode-Keys現在ダウン状態にあるキーを表す列挙値を表します。

  • KeyData- と同じKeyCodeですが、修飾子の形式で追加情報がある点が異なります - Shift/Ctrl/Alt など。

  • KeyValue- の数値KeyCode

于 2009-02-19T08:06:59.300 に答える
0

KeyDown の非常に基本的な使い方

   private void tbSomeText_KeyDown (object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.B && e.Modifiers != Keys.Shift) {

            MessageBox.Show("You Pressed b");
        }
        else if (e.KeyCode == Keys.A && e.Modifiers == Keys.Shift) {
            MessageBox.Show("You Pressed Shift+A");
        }
    }
于 2009-02-19T08:18:04.360 に答える
0

あなたの他の質問に対する私の答えを見てください:

KeyPressedイベントを使用します。

MSDNを引用:

KeyPressEventArgs は、ユーザーがキーを押したときに構成される文字を指定します。たとえば、ユーザーが SHIFT + K を押すと、KeyChar プロパティは大文字の K を返します。

e.KeyCodeこのようにして、 、 、 e.KeyDataおよび をいじる必要はありませんe.KeyValue

于 2009-02-19T08:30:05.187 に答える