关闭模态表格

当使用 ShowDialog 方法显示表单时,必须将表单的 DialogResult 属性设置为接近表单。可以使用也称为 DialogResult 的枚举来设置此属性。

要关闭表单,你只需要在某个事件处理程序中设置表单的 DialogResult 属性(由 DialogResult.None 设置为任何值)。当你的代码退出事件处理程序时,WinForm 引擎将隐藏表单,并且初始 ShowDialog 方法调用之后的代码将继续执行。

private cmdClose_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.Cancel;
}

调用代码可以捕获 ShowDialog 的返回值,以确定用户在表单中单击的按钮。当使用 ShowDialog() 显示时,表格不会自动处理(因为它只是隐藏而未关闭),因此使用 using 块以确保表格处理非常重要。

下面是一个检查使用内置 OpenFileDialog 的结果,检查结果,以及在处理之前从对话框访问属性的示例。

using (var form = new OpenFileDialog())
{
    DialogResult result = form.ShowDialog();
    if (result == DialogResult.OK)
    {
        MessageBox.Show("Selected file is: " + form.FileName);
    }
}

你还可以在按钮上设置 DialogResult 属性。单击该按钮会将表单上的 DialogResult 属性设置为与按钮关联的值。这允许你关闭表单而不添加事件处理程序以在代码中设置 DialogResult

例如,如果向表单添加一个 OK 按钮并将其属性设置为 DialogResult.OK,那么当你按下该按钮时表单将自动关闭,并且调用代码将从 ShowDialog() 方法调用返回 DialogResult.OK