私のアプリケーションは別のスレッドのサーバーと通信することがありますが、このときはフォームをロックする必要があります(つまり、ユーザーはイベントを発生させることができませんClick
)KeyDown
。今回は、クリックやマウスホバーなどのマウスイベントをブロックする円が読み込まれたウェイトオーバーレイが表示されます。
ただし、問題は、ユーザーがキーを押すことでKeyDownイベントを発生させることができ、Tabキーでボタンに移動した後にEnterキーを押すことでマウスクリックを行うこともできることです。
私はそれForm.Enabled = true;
がトリックを行うことができることを知っています、しかしそれからフォームは非常に醜いように見えます。bool inaction;
また、イベントハンドラーでこの変数を作成して確認できることも知っていますが、もっと良い方法があると思います。
短いフォーム:.Enabled = TrueのないフォームからClickやKeyDownなどのGUIイベントをブロックするにはどうすればよいですか?
どんな助けでも大歓迎です。
編集:これをオーバーレイコントロールに追加して解決しました:
protected override bool ProcessKeyMessage(ref Message m)
{
return true;
}
protected override bool ProcessTabKey(bool forward)
{
return true;
}