【解決方法】C# キーダウンまたはキーコードが機能しない


これは私のコードです

C#
private void Form1_KeyDown(object sender, KeyEventArgs e)
     {
if (e.KeyCode == Keys.F3)
         {
             Label intervillabel = new Label();
             intervillabel.Text = numericUpDown1.Value.ToString();
             intervillabel.Location = new Point(BeatDetector.Location.X, 10);
             intervillabel.Visible = true;

             panel1.Controls.Add(intervillabel);
         }
     }

エラーは、何も起こらない、すべてのキーを試してみた

解決策 1

その理由は、キーが押されると、フォームにフォーカスがあるコントロールに移動するためです。 KeyPreview のプロパティ Form に設定されています False デフォルトで。 カーソルが TextBox. 今、もし F3 キーを押しても Form's KeyDown イベントであり、代わりに TextBox および KeyDown イベント TextBox 発火します。

したがって、有効にするには KeyDown のイベント Form フォーカスが他のコントロールにある場合でも、 KeyPreview のプロパティ Form に設定する必要があります true ここで説明したように
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx[^]
KeyPreview フォーカスのあるコントロールにイベントが渡される前に、フォームがキー イベントを受け取るかどうかを示す値を取得または設定します。
とコメントの下に
フォーム レベルでのみキーボード イベントを処理し、コントロールがキーボード イベントを受信できないようにするには、フォームの KeyPress イベント ハンドラーの KeyPressEventArgs.Handled プロパティを true に設定します。
.

設定後 KeyPreview フォームのプロパティ KeyDown イベントが最初に発生し、次に KeyDown フォーカスのあるコントロールのイベントは、 KeyPressEventArgs.Handled 上記のように true に設定されていません。

解決策 2

IntializeComponent() メソッド セット:
this.KeyPreview = true;

よろしく、
Akaas 開発者

解決策 3

チェックする あなたは あなたのdesigner.cs(このファイルは Form1.cs もしも Form1 フォームの名前です あなたは あなたが与えた)ファイルを開き、イベントハンドラーがこのイベントに関連付けられているかどうかを確認してください!!!
イベントを発生させるには、イベントに関連付けられたハンドラーが必要です。 designer.cs ファイル

次の場合は解決済みとしてマークします あなたは あなたは解決策を持っています
ありがとう…

解決策 4

同じ問題。 KeyPreview を「true」に設定していますが、プログラムの実行中にキーを押しても何も起こりません。

コメント

タイトルとURLをコピーしました