在C#中的表单之间以随机顺序跳转

时间:2013-04-12 21:05:01

标签: forms

使用表单创建调查样式应用程序,它包含30个表单。例如,第一页要求用户检查要加载的调查,并根据他们的检查打开正确的表单。一切都在一个方向正常工作。我设置程序的方式是第一页保存静态布尔变量,控件类(主方法),检查变量是真还是假,然后打开相应的表格。像这样;

if (Survey.r == true || Survey.s == true || SurveySelection.M == true )
            {
                Form6 newform6 = new Form6(); 
                Form6.Hide();
                Form6.ShowDialog();

                Form7 newform7 = new Form6(); 
                Form7.Hide();
                Form7.ShowDialog();          

             }
if (Survey.t == true)
            {
                Form12 newform12 = new Form12();
                newform12.Hide();
                newform12.ShowDialog();

            }

总共有30种表格。每个表单上的下一个按钮只包含this.Hide()。

问题是我是否要在此调查中添加后退按钮, 我不确定如何处理它,因为调查不是线性的更合乎逻辑,因为它取决于用户选择的调查类型。

它可以在一个实例中加载表单4,19,24,26,在另一个实例中加载3,6,9。我需要帮助或指导实现这个逻辑的后退按钮。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

三十种形式并不是很多。您可以创建一个List并维护指向当前位置的指针。

private InitializeKnowSequence()
{
    _formIndex = 0;
    _formsList.Add(new Form2());
    _formsList.Add(new Form2());
    _formsList.Add(new Form3());
    _formsList.Add(new Form4());
}

private void NavigatePrior()
{
    if (_formIndex > 0)
    {
        _formsList[_formIndex--].Hide();
        _formsList[_formIndex].Show();
    }
}

private void NavigateNext()
{
    if(_formIndex<_formsList.Count()-1)
    {                
        _formsList[_formIndex++].Hide();
        _formsList[_formIndex].Show();
    }           
}

然后为逻辑分支转发添加PushForm(表单表单)方法

private void PushForm(Form form)
{
    _formsList.Add(form);
     NavigateNext();
}