0

フォームを使用して調査スタイルのアプリケーションを作成しました。30 のフォームが含まれています。たとえば、最初のページでは、どの調査をロードするかを確認するようにユーザーに要求し、その確認に従って正しいフォームを開きます。すべてが一方向に正しく機能します。プログラムをセットアップする方法は、最初のページで静的ブール変数を保存し、コントロール クラス (Main メソッド) で変数が true か false かをチェックしてから、対応するフォームを開きます。このような;

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 をロードできます。このロジックに戻るボタンを実装するためのヘルプまたはガイダンスが必要です。どんな助けでも大歓迎です。

4

1 に答える 1

1

30 フォームは多くありません。リストを作成し、現在の場所へのポインターを維持できます。

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 form) メソッドを追加します

private void PushForm(Form form)
{
    _formsList.Add(form);
     NavigateNext();
}
于 2013-04-12T22:15:46.923 に答える