禁用 Alt+F4 但允许通过代码关闭表单,CloseReason.UserClosing 没有帮助
我希望表单不会通过 Alt + F4 关闭,但如果 Application.Exit()
或 this.Close 是从同一个表单调用的,应该将其关闭。
我尝试了 CloseReason.UserClosing
但仍然没有帮助。
I want that the form will not close by doing Alt + F4 but if Application.Exit()
or this.Close
is called from the same Form, it should be closed.
I tried CloseReason.UserClosing
but still no help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您需要仅过滤 Alt + F4 事件(留下关闭框的单击、
this.Close()
和Application. Exit()
表现如常),那么我可以建议以下操作:KeyPreview
属性为
true
;连接表单的
FormClosing< /code>
和
KeyDown
事件:If you need to filter out Alt + F4 event only (leaving clicking of close box,
this.Close()
andApplication.Exit()
to behave as usual) then I can suggest the following:KeyPreview
property to
true
;Wire up form's
FormClosing
andKeyDown
events:您可以通过在 Form_Keydown EventHandler 上将 SuppressKeyPress 属性设置为 true 来实现这一点,如下所示。
这样,您还可以通过在同一 eventHandler 上将 SuppressKeyPress 属性设置为 false 或任何其他方式来关闭活动表单。
It's very easy you can do it by set SuppressKeyPress property to true on Form_Keydown EventHandler as below.
With this you can also close your active form by set SuppressKeyPress Property to false on same eventHandller or any other way.
通过将 Form 的 KeyPreview 属性设置为 true 并重写 OnProcessCmdKey 方法来捕获 Alt+F4 热键。
Capture Alt+F4 hotkey by setting Form's KeyPreview property to true and overriding OnProcessCmdKey method.
您是如何使用 CloseReason 的?
请参阅此处的示例代码:
http://msdn.microsoft.com/ en-us/library/system.windows.forms.form.formleading.aspx
您需要设置传递的 FormClosingEventArgs 对象的 Cancel 属性以停止表单关闭。
How did you use CloseReason?
See the sample code here:
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx
You need to set the Cancel property of the passed FormClosingEventArgs object to stop the form closing.