我正在做一个向导型的窗体组,共6个步骤,我设计了6个窗体,我觉得遇到的主要问题有这些:
1.如何组织各个窗体之间的关系.
现在我把对向导的初始化,启动,卸载和事务的核心代码都放在一个通用模块之中,每个窗体只是提供一个操作需要的条件而已.2.窗体之间的切换.
我先HIDE前一个窗体,再SHOW后一个窗体,并且显示时全部使用模式窗体.不过切换时要明显地闪烁一下,看的很不舒服.3.每个窗体的一致.为了使每个窗体大小相同,我在初始化这个模块时就置各个窗体的大小均相同.不过后来用户只要拖动窗体,位置就又不同了.我看了VB中的"数据窗体向导",它看起来就像一个窗体一样(不知是不是一个窗体?),
不知这个该怎么做?请指点.

解决方案 »

  1.   

    应该用一些容器(如PictureBox或Frame)做好一些窗体,然后在Hide前面的,Show当前的.这样就好了.
      

  2.   

    同一一楼,我做向导就是用 Picture 做容器的,但是最近听说 Frame 比较节约资源,以后改。
    而且容器可以做成控件数组,这样上一步下一步的代码都可以节省很多。
      

  3.   

    用一个窗体就够了,在上面放一个TAB控件,上一步与下一步就是tab页的切换,我就是这样做的,效果很棒。
      

  4.   

    > qiangsheng(立足中原辐射西北)
    "容器可以做成控件数组,这样上一步下一步的代码都可以节省很多"
    可以具体解释一下怎么在多个窗体下用控件数组,以及怎么节省代码吗?>Surpass(“凌寒”☆☆☆☆☆ ← 别急,还没变红)
    如果用TAB控件,如何控制用户只能点击设定好的"上一步","下一步",而不能自己直接选择某个选项卡?(否则可能无法控制顺序)
    有没有什么属性设置能使TAB控件没有标头的?
      

  5.   

    在窗体设计器上复制粘贴控件的时候,它会提示你是否要创建控件数组,选择是就可以了。
    还可以在控件的index属性上填它的索引ID,再创建新的控件就能跟它重名,形成数组。比如你有几个FRAME,为Frame1(0)、Frame1(1)、Frame1(2)……
    有一个模块级的变量,记录当前所在的步骤 intCurStep在btnNext_Click里写
    Frame1(intCurStep).visible = false
    Frame1(intCurStep + 1).visible = false
    intCurStep = intCurStep + 1在btnPrev_Click里写
    Frame1(intCurStep).visible = false
    Frame1(intCurStep - 1).visible = false
    intCurStep = intCurStep - 1就可以了,当然,为了避免下标越界,还要做相应的判断。-----------------------------------关于Surpass(“凌寒”☆☆☆☆☆ ← 别急,还没变红)所说的答案,可以参考Adodc的属性向导,它的内容是跟顺序有关的。
    如果用TabStrip做,实际跟用容器一样,因为TabStrip不是容器,需要靠代码来改变其中内容的显示与否;
    如果用SSTab做,我不知道如何让它没有标头。