模态形式的验证
本文关键字:验证 模态 | 更新日期: 2023-09-27 17:55:55
>我有一个简单的模态形式,我必须在其中检查用户输入的数据。但是在验证后,表单将关闭。它的行为是这样的,因为不是空的 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();
}
}
我会这样做:
private void btnSave_Click(object sender, EventArgs e)
{
if (validateForm())
{
DialogResult = DialogResult.Yes;
Close();
}
else
{
DialogResult = DialogResult.None;
}
}
即正如您所说,清除DialogResult
.
添加一个FormClosing
事件处理程序,如果验证失败,则设置e.Cancel = true
:
private void EditForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.DialogResult == DialogResult.OK)
{
e.Cancel = !ValidateInput();
}
}
这将使您的子窗体保持打开状态,并让用户更正错误。您可以通过检查DialogResult
并仅在OK
时执行验证来检查是否已单击"确定"或"取消"/窗口关闭按钮。