[解決済み】.NETのKeyDownとKeyPressの違いは何ですか?
2022-04-14 13:03:47
質問
の違いは何ですか?
KeyDown
と
KeyPress
のイベントは、.NETでは?
どのように解決するのですか?
があるようです。 たくさん という誤解があるようです。
との唯一の実用的な違いは
KeyDown
と
KeyPress
は、その
KeyPress
は、キー入力による文字を中継し、文字がある場合にのみ呼び出されます。
言い換えれば、もしあなたが A をキーボードで入力すると、このような一連のイベントが発生します。
- KeyDown: KeyCode=Keys.A、KeyData=Keys.A、Modifiers=Keys.None
- キープレス KeyChar='a'
- キーアップ キーコード=Keys.A
しかし、もしあなたが シフト + A を、得ることができます。
- KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
- KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
- キープレス KeyChar='A'
- キーアップ キーコード=Keys.A
- キーアップ キーコード=Keys.ShiftKey
キーをしばらく押し続けると、次のようになります。
- KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
- KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
- KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
- KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
- KeyDown: KeyCode=Keys.ShiftKey, KeyData=Keys.ShiftKey, Shift, Modifiers=Keys.Shift
- KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
- キープレス KeyChar='A'
- KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
- キープレス KeyChar='A'
- KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
- キープレス KeyChar='A'
- KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
- キープレス KeyChar='A'
- KeyDown: KeyCode=Keys.A, KeyData=Keys.A | Keys.Shift, Modifiers=Keys.Shift
- キープレス KeyChar='A'
- キーアップ キーコード=Keys.A
- キーアップ キーコード=Keys.ShiftKey
注目すべきは
KeyPress
が発生します。
の間に
KeyDown
と
KeyUp
,
ない
後
KeyUp
他の多くの回答者が述べているように、その
KeyPress
は文字が生成されていないときには呼び出されないし
KeyDown
が、キーを押している間、繰り返されることも、他の多くの回答とは異なります。
するキーの例
ない
を直接呼び出すことになります。
KeyPress
:
- シフト , Ctrl , Alt
- F1 を通して F12
- 矢印キー
となるキーの例
する
を呼び出した結果
KeyPress
:
- A を通して Z , 0 を通して 9 など。
- スペースバー
- タブ (KeyChar='\t', ASCII 9)
- 入力 (KeyChar='\r', ASCII 13)
- エスケープ (KeyChar='\x1b', ASCII 27)
- バックスペース (KeyChar='\b', ASCII 8)
好奇心旺盛なあなたへ。
KeyDown
とほぼ同じです。
WM_KEYDOWN
,
KeyPress
から
WM_CHAR
となります。
KeyUp
から
WM_KEYUP
.
WM_KEYDOWN
可
はキーの繰り返しの数より少なく呼ばれるが、それは繰り返しのカウントを送る、IRC、WinFormsは繰り返しごとに正確に1つのKeyDownを生成するためにそれを使う。
関連
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] C#では、public、private、protected、アクセス修飾子がないことの違いは何ですか?
-
[解決済み] WPFのStaticResourceとDynamicResourceの違いは何ですか?
-
[解決済み] .NET Core、.NET Framework、Xamarinの違いとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMLにSystem.Stringを埋め込む
-
[解決済み] ServicePointManagerは、*スキームのプロキシをサポートしていません[closed]。
-
[解決済み] データテーブルの並べ替え
-
[解決済み] BasicHttpsBindingとWsHttpBinding with Transport securityの違いは何ですか?
-
[解決済み] Microsoft.NETFrameworkとMicrosoft.NETFramework64の違いは何ですか?
-
[解決済み] AssemblyInfo.csは何に使うのですか?
-
[解決済み] CryptographicException「キーセットが存在しない」、ただしWCF経由に限る
-
[解決済み] Visual Studioのコンパイルエラー "mismatch between processor architecture "を修正するにはどうしたらいいですか?
-
[解決済み] WPFのStaticResourceとDynamicResourceの違いは何ですか?
-
[解決済み】 jQuery:テキストボックスの入力を「数字」だけに制限する最良の方法は何ですか?(小数点を許可する)。