现在有3个窗体,a,b,c,分别为3个类,每个有自己的传入参数,输出参数。如果一直点"确定",这三个窗体出现的顺序是a=> b=> c.
如果其中一个窗体没有点"确定",而是点了"取消",那返回上一个窗体.
我现在不希望把这个逻辑分别先在各个窗体里,而单独写一个逻辑类处理这个逻辑
大概是
while(true){
窗体A a = new 窗体A();
DialogResult resA = a.showDialog();
if(resA = DialogResult.OK){
while(true){
窗体B b = new 窗体B();
DialogResult resB = b.showDialog();
if(resB = DialogResult.OK){
while(true){
窗体C c = new 窗体C();
DialogResult resC = c.showDialog();
if(resC = DialogResult.OK){
//Complete...
}
else break;
}
else break;
}
}
else break;
}
如果其中一个窗体没有点"确定",而是点了"取消",那返回上一个窗体.
我现在不希望把这个逻辑分别先在各个窗体里,而单独写一个逻辑类处理这个逻辑
大概是
while(true){
窗体A a = new 窗体A();
DialogResult resA = a.showDialog();
if(resA = DialogResult.OK){
while(true){
窗体B b = new 窗体B();
DialogResult resB = b.showDialog();
if(resB = DialogResult.OK){
while(true){
窗体C c = new 窗体C();
DialogResult resC = c.showDialog();
if(resC = DialogResult.OK){
//Complete...
}
else break;
}
else break;
}
}
else break;
}
Form[3] steps = new Form[3];
steps[0]=new FormA();
steps[1]=new FormB();
steps[2]=new FormC();
int i =0;
while(true)
{
if(i>2)break;
DialogResult res = steps[i].showDialog();
if(res == DialogResult.OK)
{
i++;
}
}
steps[0]=new FormA();
steps[1]=new FormB();
steps[2]=new FormC();
int i =0;
while(true)
{
if(i>2)break;
DialogResult res = steps[i].showDialog();
if(res == DialogResult.OK)
{
i++;
}
else
{
i--;
if(i<0)i=0;
}
}
非常感谢
(1)不要直接使用Form作为基类,可以自己写一个基类。提供一些比如:IsOK()函数,看上去就更直观。
(2)可以不用数组,而使用泛型之类的更灵活。如:List<FormX>。
(3)可以把这个函数写到一个比如:StepFormMgmt这样的类里,把遍历用的局部变量做为成员。但这个只有在步骤很多,或者这个功能可以重复用到时才有意义吧。