我正在做个工具软件,打开软件同时弹出两个窗口,底层是主窗口,上层是向导。
向导对话框是模式窗体,向导里有:下一步按钮,可以弹出另一个模式对话框,然后隐藏。
第二个对话框内有:上一步按钮、下一步按钮。我的问题是,当弹出第二个模式对话框的时候,如何点上一步返回到第一个对话框(原来隐藏的)。(不是new一个新的实例)如果new一个新的话,循环点击:第一个对话框下一步->第二个对话框上一步,将会隐藏多个对话框。
向导对话框是模式窗体,向导里有:下一步按钮,可以弹出另一个模式对话框,然后隐藏。
第二个对话框内有:上一步按钮、下一步按钮。我的问题是,当弹出第二个模式对话框的时候,如何点上一步返回到第一个对话框(原来隐藏的)。(不是new一个新的实例)如果new一个新的话,循环点击:第一个对话框下一步->第二个对话框上一步,将会隐藏多个对话框。
解决办法:在主窗口中创建 Form1 和 Form2,在Form1的下一步按钮中调用Form2.Show(),再把Form1.Close();同样的,在Form2的上一步按钮中调用Form1.Show(),再把Form2.Close()。
1、所有向导页都在一个窗体中实现,在窗体中放多个Panel,每个Panel对应一个向导页面,
在点击上一步或下一步的时候,只要显示一个需要的Panel,隐藏掉其它的Panel就可以了,
显示和隐藏通过修改控件的Visible属性来实现。
2、如果向导页面要在多个窗体中复用,就把每个向导页面做成一个UserControl,再在显示窗体上放
一个Panel。在点击上一步或下一步的时候,向Panel里添加需要的UserControl,移除不需要的
UserControl。
{
_form1 = form1;
}
public 上一步_Onclick(...)
{
_form1.show();
this.Close();
}
不要使用N多窗口做向导。
一般是用TabControl做向导。修改SelectedIndex 就达到了上一步下一步效果。
定义很多UserControl,根据不同的步骤显示不同的用户控件。高级一点的设计:采用设计模式:命令模式。LZ搜搜 Command模式应用实践 这篇文章,专门讲这种方式的。