2016-11-21 37 views
0

私は考えていました。正しい情報の受け渡し方法

フォームを作成し、applicaton.run(form1)を使用するとき。そのフォーム1では、別のフォーム2を開き、フォーム1を非表示にします。 form2では、別のform3を開き、フォーム2を非表示にします。しかし、form3では、form1で提供されている情報(変数)私が間違っていれば私を修正してください。

私はいくつかの方法について考えましたが、正しい方法ではないと思います。

  1. 静的クラスのform1から情報を保存します。

  2. は、すべてのフォームを作成し、メインクラスのオブジェクトと近い/ 1

  3. で1それらを実行をForm1からForm2をへたForm3に(変数)の情報を渡します。

これを行う正しい方法は何ですか?

私は大変申し訳ございません。

答えて

0

です。これらがモーダルとして示されたダイアログフォームで、1つまたは2つの変数しかない場合は、そのフォームのクラスのプロパティとして値を格納し、標準のMessageBoxフォームのDialogResultと同じ方法で検査してください。

複雑なフォームやフォームが開いている場合は、オブジェクトを作成してフォームに渡したい場合があります。オブジェクトは参照によって渡されるので、MyDataContainerというクラスを作成してメインフォームでインスタンスを作成し、そのインスタンスを他のフォームに渡すと、それぞれのフォームで同じインスタンスになります。したがって、form3がそのインスタンスを更新すると、他のフォームもそれらの変更を見ることができます。

Ps:静的ルートを避けてください。有効なユースケースはごくまれです。

+0

はい、分かりました。私はいつもどのように選ぶべきかを躊躇する。これは物事を少し楽にします。 –

0

本当に「正しい」方法はありません。あなたが言及したすべての方法が働くことができます。 1つの追加の方法は、すべてのフォームの1つの静的リストを維持することです。そうすれば、どんなフォームでもリストを検索することで他のフォームを見つけることができます。より具体的には、Dictionary<string,Form>は、文字列がフォームの一意の識別子である場合に便利です。

つまり、すべてが実際にあなたの設計目標になってしまいます。通常は、設計目標を達成する最も簡単なソリューションを用意することが最善です。

+0

ありがとうございました。設計目標を達成する最も簡単なソリューションを使用します。 –

+0

@tuyen。喜んで助けになる。 upvoteは評価されるだろう。 –

+0

私は大好きですが、公開するには十分な担当者がいません。それはその記録を言う。 –

関連する問題