【问题标题】:Method for "After" button click单击“之后”按钮的方法
【发布时间】:2013-06-04 01:32:48
【问题描述】:

我有一个 winform,我想在按下 X 按钮后应用一个方法, 问题是,winform 只为您提供以下选项,FormClosing 或 FormClosed

private void MailNamen_FormClosing(object sender, FormClosingEventArgs e)
    {

    }
        //Or
        private void MailNamen_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

当用户实际点击它时,我有没有办法让它做某事,而不是让它覆盖表单在没有用户点击 X 的情况下关闭的情况???? 非常感谢提前!

【问题讨论】:

  • 使用 formclosedeventargs,我不记得语法,但我确信上面有一些说明它是如何关闭的
  • 你问这个是因为你想阻止表单在某些实例上关闭吗?
  • @inisheer,我已经阅读了这个问题,因为如果被 X 关闭,OP 希望做一些不同的事情
  • 看这个链接我想他回答了你的问题stackoverflow.com/a/3735824/1546137
  • @Sayse 正确。我误读了你的评论。不幸的是,这些事件参数仅允许您查看表单是否在非常一般的情况下关闭。没有特定于 X 按钮。

标签: c# windows winforms methods


【解决方案1】:

FormClosingEventArgs.CloseReason 属性告诉您关闭表单的原因。如果您查看 CloseReason 枚举,其中一个值是 UserClosing - 当用户按下 X 按钮或按下 Alt+F4 时会发生这种情况。

FormClosing 事件发生在用户单击 X 按钮之后但在实际关闭表单之前 - 此时您仍然可以取消关闭表单。

编辑: 如果您特别想要处理X 按钮,请参阅此答案:https://stackoverflow.com/a/9445682/682404 - 这显示了如何检测窗口非客户区中的点击事件并确定关闭按钮是否点击。

正如那个答案所说,你真的,真的需要一个特定的理由来这样做,否则你会迷惑用户。

【讨论】:

  • 不幸的是,如果您在任务栏中右键单击并关闭应用程序,也会使用 CloseReason.UserClosing。因此,它不仅适用于“X”按钮。
  • @Inisheer 那是因为关闭表单的方法不止一种。程序不应该区分这些方式,因为它会使用户感到困惑。 X 按钮的目的是关闭表单,因此以相同的方式处理所有用户启动的表单关闭事件是有意义的。这就是为什么没有特定的 X 被点击 事件。
  • 正确,但 OP 明确表示他/她想了解 X 按钮。是否可能还有待回答。
  • @Inisheer 你说得对,我为此编辑了答案。将X 按钮与其他关闭表单的方式不同地处理仍然是一个非常糟糕的主意。
猜你喜欢
  • 1970-01-01
  • 2015-11-06
  • 2018-10-01
  • 2021-08-14
  • 1970-01-01
  • 2011-09-05
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多