我正在做个工具软件,打开软件同时弹出两个窗口,底层是主窗口,上层是向导。
向导对话框是模式窗体,向导里有:下一步按钮,可以弹出另一个模式对话框,然后隐藏。
第二个对话框内有:上一步按钮、下一步按钮。我的问题是,当弹出第二个模式对话框的时候,如何点上一步返回到第一个对话框(原来隐藏的)。(不是new一个新的实例)如果new一个新的话,循环点击:第一个对话框下一步->第二个对话框上一步,将会隐藏多个对话框。

解决方案 »

  1.   

    不要在 Form1 点下一步按钮的时候去创建 Form2,调用Form2.Show(),这样做就会出现Form1.Close的时候,Form2也被关闭了。
    解决办法:在主窗口中创建 Form1 和 Form2,在Form1的下一步按钮中调用Form2.Show(),再把Form1.Close();同样的,在Form2的上一步按钮中调用Form1.Show(),再把Form2.Close()。
      

  2.   

    你建立个类把你的第1步 第2步....放到一个静态类里 用.Visible = false; .Visible = true; 来做
      

  3.   

    直接使用一個窗體,用TabControl控件好了
      

  4.   

    你的设计有问题,一般这种向导不是用的多个对话框,是一个对话框的多个page,MFC里一般就是PageControl控件(好像,有点忘了),每次下一步就换一个页面,你这种多个对话框的设计是有问题的。
      

  5.   

    楼主你可以换一下思路,提供2个思路给你
    1、所有向导页都在一个窗体中实现,在窗体中放多个Panel,每个Panel对应一个向导页面,
       在点击上一步或下一步的时候,只要显示一个需要的Panel,隐藏掉其它的Panel就可以了,
       显示和隐藏通过修改控件的Visible属性来实现。
    2、如果向导页面要在多个窗体中复用,就把每个向导页面做成一个UserControl,再在显示窗体上放
       一个Panel。在点击上一步或下一步的时候,向Panel里添加需要的UserControl,移除不需要的
       UserControl。
      

  6.   

    Form2:Form1 _form1;public Form2(Form1 form1)
    {
       _form1 = form1;
    }
    public 上一步_Onclick(...)
    {
        _form1.show();
        this.Close();
    }
      

  7.   


    不要使用N多窗口做向导。
    一般是用TabControl做向导。修改SelectedIndex 就达到了上一步下一步效果。
      

  8.   

    多谢各位解答,确实是思路错了,自己掉进误区了,从codeproject找到了比较规范的wizard库,先研究下!结贴
      

  9.   

    其实可以不用弹出窗口,直接用用户控件,简单的设计:
    定义很多UserControl,根据不同的步骤显示不同的用户控件。高级一点的设计:采用设计模式:命令模式。LZ搜搜 Command模式应用实践 这篇文章,专门讲这种方式的。