私はVisual C#をかなり新しくしていますが、Delphiで長い間コード化しています。私はキーボード上の特定のキーを入力しない限り隠されているシンプルなパネルを持ったフォームを作成しました(私は "KeyPreview"をフォームにtrueに設定していますが、KeyDownイベントを使って正しいキーパネルを表示/非表示にする)。パネルのすぐ下にはwebBrowserコンポーネントがあります。次のように何が起こっているC#フォームにフォーカスがあることを確認する
は次のとおりです。
私のフォームを最初に起動すると、私は、フォームが最初にフォーカスを持っているを確認します「示す」イベントのコードがあります。
private void Form1_Shown(object sender, EventArgs e)
{
if (!Focused)
{
Focus();
}
}
はフォームがあるときにこの時点では、適切なキーストロークを検出してパネルを表示または消滅させるためのコードは正常に動作します。
ここでは、物事が奇妙になり、私は何をすべきか分からない。私が間違っている何のために取り扱っております2つの部分があります。
私は別のフォームをクリックし、自分のフォームのキャプションバーに再び私のフォーム上のフォーカスを取得し、キーストロークをしようとする場合は、キーストロークの検出は、動作しません。しかし、別のフォームをクリックしてもう一度フォームに戻ると、フォームのキーストロークの検出が機能します。私のfromに再度焦点が当てられるたびに、これが確実に機能するようにするにはどうすればよいですか?
フォーム内のWebブラウザコンポーネントをクリックすると、フォームのKeyDownコードが制定されなくなります。フォームのキャプションバーをクリックしても、KeyDownイベントは機能しません。私のフォーム内のコンポーネントがクリックされた場合、私のフォームは引き続きKeyDownイベントに応答することを保証するために何をする必要がありますか?
ありがとうございました。
キャプションバーのコードを表示できますか? –
それだけです。キャプションバーのコードはありません。私はちょうどフォーム自体のKeyDownイベントのコードを持っています。 – Andre72127