Windows窗体和子窗体例程
本文关键字:窗体 例程 Windows | 更新日期: 2023-09-27 18:13:54
我有一个windows窗体方法被调用:
// 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()
将再次执行。基本上我想让用户承认他们当前的输入会导致错误,在子表单中显示,允许他们取消重新输入。然后我想重新执行它,并关闭表单,如果没有错误。
现在,我把Cancel输入的一切都搞定了。当用户点击取消,我返回到我的主要形式,但点击OK对它,不重新执行renumberViewports()
命令。
任何帮助将不胜感激。
如果我明白你想做什么,在你的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();
}