我有一个被调用的窗体表单方法:
// fire up the form
ViewportRenumberingForm form = new ViewportRenumberingForm(pickedRef, doc);
form.ShowDialog();
然后在该表单中我有一个运行的例程:
private void btnOK_Click(object sender, EventArgs e)
{
renumberViewports();
}
现在如果在renumberViewports()
执行期间遇到某种情况,我会要求它启动一个子表单以获取用户如何继续的输入:
if (openAdditionalForm)
{
ViewportRenumberingForm2 subForm = new ViewportRenumberingForm2();
var result = subForm.ShowDialog();
if (result == DialogResult.OK)
{
// get all values preserved after close
bool selected = subForm.ReturnSelected;
bool unselected = subForm.ReturnUnselected;
if (selected)
{
//do something
}
if (unselected)
{
//do something
}
}
else if (result == DialogResult.Cancel)
{
this.Show();
}
}
现在,问题是:当用户点击取消时我想返回我的主表单并基本上重新开始。这意味着用户可以重新输入任何信息并点击btnOK_Click()
,renumberViewports()
将再次执行。基本上我希望用户能够确认他们当前的输入会导致错误,以子表格形式显示它们,允许他们取消以重新输入输入。
然后,如果没有错误,我想重新执行它并关闭表单。
现在,我已经完成了取消输入工作的所有工作。当用户点击取消时,我返回到我的主表单,但是点击OK,不会重新执行renumberViewports()
命令。
任何帮助将不胜感激。
答案 0 :(得分:0)
如果我了解您要执行的操作,请在renumberViewports()
方法中将DialogResult.Cancel
条件块更改为:
else if (result == DialogResult.Cancel)
{
// this will close this form and set the result to 'Cancel'
this.DialogResult = DialogResult.Cancel;
}
然后,在你的主要形式,而不是简单:
ViewportRenumberingForm form = new ViewportRenumberingForm(pickedRef, doc);
form.ShowDialog();
...我会将其更改为一个不断重新打开ViewportRenumberingForm
表单的循环,直到结果不是Cancel
:
DialogResult result = DialogResult.Cancel;
while (result == DialogResult.Cancel)
{
ViewportRenumberingForm form = new ViewportRenumberingForm(pickedRef, doc);
result = form.ShowDialog();
}