【问题标题】:Jumping between forms in C# that are in random order在 C# 中随机顺序的表单之间跳转
【发布时间】:2013-04-12 21:05:00
【问题描述】:

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

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。我需要帮助或指导实现此逻辑的后退按钮。任何帮助将不胜感激。

【问题讨论】:

    标签: forms


    【解决方案1】:

    三十个表格并不多。您可以创建一个列表并维护一个指向当前位置的指针。

    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(Form表单)方法用于逻辑分支向前

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

    【讨论】:

    • 感谢您的帮助。我能够毫无问题地向前/向后导航。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多