[ad_1]
これは私のコードです
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」に設定していますが、プログラムの実行中にキーを押しても何も起こりません。
[ad_2]
コメント