0

8 つのフォームを持つ非常に複雑な Windows アプリケーションがあります。各フォームには「前へ」「次へ」ボタンがあり、簡単にフォームを編集できます。

 private void ShowNext()
    {
        if (FormNext == null)
            FormNext = new SomeForm(this);
        FormNext.Show();
        this.Hide();
    }

    private void ShowPrev()
    {
        FormPrev.Show();
        this.Hide();
    }

    private void btnNext_Click(object sender, EventArgs e)
    {
        ShowNext();
    }

    private void btnBack_Click(object sender, EventArgs e)
    {
        ShowPrev();
    }

各フォームは、異なる sql insert table コマンドを実行します。しかし、問題は、各フォームへのすべての挿入を終了したくないということです。

私が望むのは、ユーザーが正しい入力値を確認したら、最後のフォームですべてを終了することです。つまり、最初から最後の変数まですべての変数を渡す必要があります。

質問: メモリはすべての変数を保持できますか? それらをクロスフォームに渡す方法は?

ありがとう。

4

4 に答える 4

1

以下のように、文字列クエリを新しい/古いフォームのパブリック変数に簡単に渡すことができます

protected void btnNext_Click(object sender, EventArgs e)
{
    MyForm2 x = new MyForm2();
    x.Query = "My Query";   // here "Query" is your custom public string variable on form2
    x.Show()
}
于 2012-05-09T19:35:22.437 に答える
1

メイン フォームで static public フィールドを定義し、各サブ フォームの値を更新します。最後に、挿入する最後のフォームのフィールドを選択します

次の行に何か:

public partial class Form1 : Form //your main fomr
    {
        public static List<MyContainerClass> myContainer= new List<MyContainerClass>();
        .............

ここで MyContainerClass は、永続化するすべての値を保持できる、コードで定義された何らかのクラスである可能性があります。単なる文字列の場合は、文字列のリストを作成できます。次に、各フォームで値を設定します

Form1.myContainer.Add(new_values);

最後のフォームでは、値にアクセスできます

foreach(MyContainerClass mc in Form1.myContainer)
{
//Do your work
}
于 2012-05-09T19:27:40.103 に答える
0

すべての変数を保持する静的シングルトン クラスを作成します。

于 2012-05-09T19:27:26.170 に答える
0

必要なデータにアクセスできるコンテキストへの参照を保持する必要があるだけです。

protected void btnNext_Click(object sender, EventArgs e)
{
    SomeContext.Push(myFormStateDataThatIsReady);
    ShowNext();
}

そして、最後のステップが来たら、このデータをそのコンテキストから引き出して、そのデータを書き込むことができます。

于 2012-05-09T19:28:01.573 に答える