Alt+を実行してもフォームが閉じないようにしたいのですが、同じフォームからorが呼び出されたF4場合は、フォームを閉じる必要があります。Application.Exit()
this.Close
私は試しCloseReason.UserClosing
ましたが、まだ助けにはなりません。
Alt+を実行してもフォームが閉じないようにしたいのですが、同じフォームからorが呼び出されたF4場合は、フォームを閉じる必要があります。Application.Exit()
this.Close
私は試しCloseReason.UserClosing
ましたが、まだ助けにはなりません。
Alt+イベントのみを除外する必要がある場合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プロパティを true に設定することで、非常に簡単に実行できます。
if (e.KeyCode == Keys.F4 && e.Alt)
{
e.SuppressKeyPress = true;
}
これにより、同じ eventHandler またはその他の方法で SuppressKeyPress プロパティを false に設定して、アクティブなフォームを閉じることもできます。
Form の KeyPreview プロパティを true に設定し、OnProcessCmdKey メソッドをオーバーライドして、Alt+F4 ホットキーをキャプチャします。
CloseReason をどのように使用しましたか?
ここのサンプル コードを参照してください: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx
フォームのクローズを停止するには、渡された FormClosingEventArgs オブジェクトの Cancel プロパティを設定する必要があります。