首页 > 解决方案 > 关闭winform时检测单击了哪个按钮?

问题描述

我的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按钮单击处理程序,但我很快发现似乎没有办法取消实际关闭表单。然后我在 SO 上阅读了使用的建议FormClosing。这工作正常,但......

如果用户通过按下取消按钮关闭表单,此事件仍会触发。那讲得通。但我只想执行此验证检查并在他们单击“确定”按钮时取消关闭表单。

我们如何做到这一点?

标签: c#.netwinformsformclosing

解决方案


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

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

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

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


推荐阅读