2011-07-12 21 views
0

異なるコントロールを持つフォームがあるとします。テキストボックスとchkboxを言いましょう。ユーザーが何かを入力してチェックステータスを変更した場合は、フォームを閉じてもう一度開くと、クローズ直前のフォームのステータスを見ることができます(設計されたステータスではありません)。私はこれを50種類のコントロールを持つフォームに実装する必要があります。あなたは私にそれについてのヒントを教えてくれませんか?私はC#でプログラミングしています。フォームを読み込んで、そのフォームにユーザーが適用した変更を読み込む方法は?

+0

ASP.NET、WinForm、またはWPF? –

+0

あなたはwinforms、WPF、webforms、について話していますか? – ChrisWue

答えて

1

編集:新しい答え:

Recursively find all child controls of the form that are TextBox and CheckBoxして保存(辞書[名、値]またはファイルやデータベースに、あなたの選択)。その後、フォームを再度表示する時間が来たら、プロセスを逆にします。子を再帰して、リストからコントロールの前の値を見つけます。古いファイルに値が含まれていない場合は、デフォルトを使用します(Text/Checkedプロパティを設定しないでください)。

オリジナル回答: 防止これはそれとして、すべてを正確に保持されます

myForm.Show(); 

あなたがもう一度フォームを表示する必要があるときに、本当に、

protected override OnClosing (CancelEventArgs ea) 
{ 
    ea.Cancel = true; 
    this.Hide(); 
} 

、フォームにして、閉じてからフォーム、ありました。

+0

ありがとうございますが、私は何とかフォームを保存する必要があります。ユーザーには次のオプションのいずれかを取得する必要があるため:1.新規作成2.既存の編集。フォームは実際にシミュレーションを実行するための調整を取得するので、毎回設定を調整するのは難しいです。将来的には異なる調整もロード可能でなければならない。 – Amir

+0

@Amir、私は新しい答えを提案しました。 –

+0

はいそれは役に立ちます。しかし、私は、ユーザー定義のコントロール、およびコンボボックスは、ユーザーによって作成され、さまざまなコントロール間のさまざまなイベントの相互作用があります。私はシリアライゼーションについて考えていました。単純にすべての合併症を伴うファイルにフォームを書き込むことができることは何ですか? – Amir

1

フォームで必要とされるすべての情報を保持するデータモデルを定義するための適切な方法だと思います。その後、そのデータモデル(データベース、XMLなど)を永続化し、再度ロードすることができます。フォームを開いて、現在のユーザーがフォームを完了していない場合は、データモデルに基づいてフォーム値を入力できます。これは、あなたが実際にあなたのビジネスロジックのために興味を持っていると思われるデータをビューから切り離します。 Model-View-Presenterのデザインパターンを見たいと思うかもしれません。

関連する問題