以模态形式验证

时间:2011-05-07 19:40:30

标签: c# winforms

我有一个简单的模态形式,我必须检查用户输入的数据。但经过验证后,表格将被关闭。它的行为是这样的,因为没有空的DialogResult属性,但我需要这个值用于其他目的(在父窗体中) 有什么想法吗?

一些清理问题的代码


//This method creates and calls a modal form. 
public static Definition edit(Definition w)
{
    EditForm ed = new EditForm();
    DialogResult dr = ed.ShowDialog();
    if (dr == DialogResult.OK)
    {
       //update some fields of passed object
    }
    //other code
}

private void btnSave_Click(object sender, EventArgs e)
{
       if (validateForm())
       {
           DialogResult = DialogResult.Yes;
           Close();
       }
}


2 个答案:

答案 0 :(得分:4)

我会这样做:

private void btnSave_Click(object sender, EventArgs e)
{
       if (validateForm())
       {
           DialogResult = DialogResult.Yes;
           Close();
       }
       else
       {
           DialogResult = DialogResult.None;
       }
}

即。如你所说,清除DialogResult

答案 1 :(得分:0)

添加FormClosing事件处理程序,如果验证失败,请设置e.Cancel = true

private void EditForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.DialogResult == DialogResult.OK)
    {
        e.Cancel = !ValidateInput();
    }
}

这将使您打开子表格并让用户纠正错误。您可以通过选中DialogResult来检查是否单击了“确定”或“取消”/窗口关闭按钮,只检查OK是否已执行验证。