我有一个简单的模态形式,我必须检查用户输入的数据。但经过验证后,表格将被关闭。它的行为是这样的,因为没有空的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();
}
}
答案 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
是否已执行验证。