我有2个表单 - 当在Form1上按下按钮时,它会触发表单2打开。用户必须输入一些信息,然后按确定。
如果信息没有填写,我会抛出一个错误,但结果是alwayys返回到主窗体 - 我不希望这种情况发生,直到所有信息都完成。我怎么能这样做?
也许我应该做的是传回一个bool Success并以这种方式处理它?</ p>
Form1中
FormSaveChanges FormSaveChanges = new FormSaveChanges();
var result = FormSaveChanges.ShowDialog();
if (result == DialogResult.OK)
{
// The code comes back here even if not all information was filled out
}
表格2
private void radButtonSaveChanges_Click(object sender, EventArgs e)
{
try
{
if (radTextBoxReferenceNumber.Text == "")
{
RadMessageBox.Show(this, " You must enter a reference number", "Error", MessageBoxButtons.OK, RadMessageIcon.Error);
return; // Quit
}
else
{
// Save items and return to the main form
}
}
}
答案 0 :(得分:3)
在Form2中,当一切正常时,添加以下代码行:
this.DialogResult = DialogResult.OK;
答案 1 :(得分:1)
只需将第二个表单的属性DialogResult更改为DialogResult.None
即可private void radButtonSaveChanges_Click(object sender, EventArgs e)
{
try
{
if (radTextBoxReferenceNumber.Text == "")
{
RadMessageBox.Show(this, " You must enter a reference number", ....);
// Stop the WinForms manager to close this form
this.DialogResult = DialogResult.None;
return;
}
else
{
// all ok.... let's return the DialogResult property of the button
// Do nothing, the WinForms manager gets the DialogResult of this button and
// assign it to the form closing it....
}
}
]
通过这种方式,Form2没有关闭,您的用户可以在不重新输入所有内容的情况下修复错误
表单的DialogResult属性通常设置为DialogResult.None,并更改为按钮上显示的相同属性的值。如果按钮具有DialogResult = DialogResult.OK,则代码退出ShowDialog,从单击的按钮返回DialogResult的值。 将表单设置为None可以防止在需要修复输入错误时关闭表单