0

Form1つのメインFormMainと1つのヘルパーFormFormHelperがある1つのアプリケーションを作成しています。

理解のために、FormMainでユーザーが注文を入力していて、FormHelperを開いていくつかの値を入力したいという例を考えてみましょう。

注文が保存されると、FormMainの値とFormHelperの値が保存されます。

私がしたことは、FormHelperをFormMainの定義のフィールドにすることでした。

public partial class FormMain : Form
{
    FormHelper BillsForm;
}

そして、コンストラクターで:

 public FormReceiptNew(string ReceiptNo)
    {
        InitializeComponent();
        BillsForm = new BillsForm();//just once
    }

ここで、ユーザーがFormMainに入力しているときに、FormHelperにいくつかの値を入力したいとします。ユーザーは、Alt + Hを押すと、を使用してフォームが表示さShowDialog()れ、入力が完了すると、ユーザーはFormHelperを閉じます。同じプロセスFormHelperが必要な回数だけ発生します。

同じフォームを複数回開く必要がある理由は、ユーザーがそのフォームに特定の値を入力していて、次にFormHelperが再び表示されたとき、およびユーザーがFormMainを完全に終了したときに、値を保持したいからです。 FormMainの値は、FormHelperの値と一緒に保存されるため、ユーザーが毎回Alt + Hを押すと、次のコードは機能しません。

BillsForm= new FormHelper();
BillsForm.ShowDialog(); 

新しいフォームを作成しているため、古い値はすべて削除されます。

4

2 に答える 2

0

メイン フォームで、ヘルパー フォームへの参照を保存します。ヘルパー フォームを 1 回インスタンス化し (たとえば onLoad)、同じオブジェクトで showDialog() を呼び出し続けます。呼び出し間ですべてのフィールドを保持する必要があります。

于 2011-06-16T00:01:53.793 に答える
0

閉じた後にこれらの値をメイン フォームに保存する場合は、作成時にコンストラクターまたはセッターを介してそれらの値を FormHelper に戻すことができます。あなたの質問から、メインフォーム内に保持したい値を保存しようとしているように聞こえるので、作成時にそれらを設定することは問題になりません。

于 2011-06-14T04:29:08.017 に答える