Alt+F4 を無効にしますが、コードによってフォームを閉じることは許可します。CloseReason.UserClosing は役に立ちません
-
27-09-2019 - |
質問
次のようにしてフォームが閉じないようにしたいです オルタナティブ + F4 しかし、もし Application.Exit()
または this.Close
同じフォームから呼び出される場合は、閉じる必要があります。
私は試した CloseReason.UserClosing
しかしまだ助けがありません。
解決
フィルタリングする必要がある場合 オルタナティブ + F4 イベントのみ (クローズボックスをクリックしたままにする、 this.Close()
そして Application.Exit()
通常どおりに動作するように)その場合は、次のように提案できます。
- フォームの設定
KeyPreview
財産をtrue
; フォームを接続する
FormClosing
そしてKeyDown
イベント:private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (_altF4Pressed) { if (e.CloseReason == CloseReason.UserClosing) e.Cancel = true; _altF4Pressed = false; } } private bool _altF4Pressed; private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Alt && e.KeyCode == Keys.F4) _altF4Pressed = true; }
他のヒント
これは非常に簡単にあなたが。
以下のようにセットの Form_Keydown のEventHandlerの上の真にある[ SuppressKeyPress のプロパティでそれを行うことができます if (e.KeyCode == Keys.F4 && e.Alt)
{
e.SuppressKeyPress = true;
}
これによりすることもでき、同じeventHandllerまたはその他の方法でfalseに設定SuppressKeyPress財産近くにあり、あなたのアクティブなフォームます。
trueにフォームのKeyPreviewプロパティを設定し、OnProcessCmdKeyメソッドをオーバーライドすることにより、Altキー+ F4のホットキーをキャプチャします。
あなたはCloseReasonを使用しましたか?
サンプルコードをここに参照してください。 http://msdn.microsoft.com/ EN-US /ライブラリ/ system.windows.forms.form.formclosing.aspxする
あなたは渡さFormClosingEventArgsのCancelプロパティを設定する必要があるフォームの閉鎖を停止することを目的ます。
所属していません StackOverflow