English 中文(简体)
.Net Winforms 告知是否按下退出按钮
原标题:
  • 时间:2009-03-18 21:55:18
  •  标签:

我正在使用一些控件,当发生任何事情时都会触发验证,包括用户按退出按钮时。有没有办法判断是否按了退出按钮?

最佳回答

谢谢大家。找到了一个避免这一切的解决方案。

我正在尝试使用Infragistics下拉菜单的LimitToList功能。然而,该功能会阻止所有其他事件的触发,包括窗体关闭!作为解决方法,我考虑在LimitToList功能中检查退出按钮是否被按下,然后禁用LimitToList以允许退出。所以我开始检查ActiveControl,等等,但遇到了很多问题(如果打开了另一个窗体,会发生什么等)。

所以我放弃了“LimitToList”功能,并使用标准验证方法编写了自己的验证事件。为什么有人要编写一个预防窗体关闭的功能,这超出了我的理解范围!

问题回答

如果您指的是窗口右上角的关闭按钮,您需要使用FormClosing事件。

为了补充Ray的说法,您可以检查表单的FormClosing事件。

具体来说,请查看FormClosingEventArgs的CloseReason属性。如果用户单击窗体右上角的x,此属性的值将为UserClosing。

然而,如果您有自己的关闭按钮来关闭表单,则此属性将具有相同的值,因此您无法知道用户如何关闭表单。

我所做的是在我的表单中添加一个名为_closeButtonClicked的bool字段,并在我的“关闭”按钮被点击时将其设置为true。在我的FormClosing事件中,我检查e.CloseReason == UserClosing和_closeButtonClicked。

这对我有用,但我想知道是否有更好的方法。

假设退出按钮是指右上角的小 X 按钮,那么不是。点击按钮会直接触发 onClose 事件,没有任何中间按钮的按压或事件可绑定。一旦进入 OnClose,您可以尝试弄清楚自己是如何到达那里的,但没有中间步骤。我建议您在关闭事件中调用所有验证;如果验证失败,则可以通过 onClose 事件参数取消关闭,并从那里开始处理。





相关问题
热门标签