【问题标题】:Detecting which button was clicked when closing a winform?关闭winform时检测单击了哪个按钮?
【发布时间】:2021-09-18 06:45:00
【问题描述】:

我的 winform 中有这个事件处理程序:

private void SaveToDXF_FormClosing(object sender, FormClosingEventArgs e)
{
    // Make sure the user has selected at-least one layer
    if (listBoxLayers.SelectedItems.Count == 0)
    {
        _AcAp.Application.ShowAlertDialog("Please select one or more layers.");
        e.Cancel = true;
    }
}

最初我使用的是 OK 按钮单击处理程序,但我很快发现似乎没有办法取消实际关闭表单。然后我读到了一个使用FormClosing的建议。这工作正常,但...

如果用户通过按取消按钮关闭表单,此事件仍会触发。这就说得通了。但我只想执行此验证检查并在他们单击 OK 按钮时取消关闭表单。

我们如何做到这一点?

【问题讨论】:

    标签: c# .net winforms formclosing


    【解决方案1】:

    听起来您可以在关闭处理程序中检查this.DialogResult:它会根据单击的按钮而有所不同(无论您在属性网格中设置为DialogResult 什么)。

    例如“不要检查他们是否正在取消”可能就像

    if (this.DialogResult != DialogResult.Cancel && listBoxLayers.SelectedItems.Count == 0)
    

    如果您有更多检查要做,那么将“如果取消则返回”作为事件处理程序的第一行可能很简单

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 2012-03-15
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多