2009-08-24 6 views
0

私のフォームにコントロールを追加するとき、現在私の内部データ構造で保存とロードコードでワイヤリングしなければならず、すべてのコントロールでこれを行う必要があります。このシナリオはDRY(自分自身を繰り返さない)原則に厳しく違反し、微妙なバグを導入する可能性があります。WinForms:一般的な家事の自動化

foreachループですべてのコントロールをトラバースするというアイデアを思いつきました。Nameプロパティはキーになり、Text(またはタイプに応じて)は辞書の値になりますプロシージャ中の入力コントロール)。このようにして、私はそれを保存/ロードするために辞書をシリアライズ/デシリアライズする必要があります。

だから私はなぜ尋ねるのですか?私は初心者であり、私が思いついたのと同じ仕事を達成するための実績のある、テストされた方法があると思います。

申し訳ありませんが、私の厄介な英語のために、私は母国語として学ぶことができませんでした。

あなたの助け

ノートをありがとう:私はWPFについて知っているが、私は理想的には2.0

+0

これは自家製データバインディングソリューションのようなものです。オブジェクトでデータソースオプションを使用しようとしましたか? –

答えて

0

を.NETに固執する必要がありますが、すべてのコントロールは、基本クラスから継承したいが、基本クラスは、各コントロールが初期化されるときに、このすべてを処理できます。辞書が必要な場合は、辞書をメソッドに渡すと、メソッドはコントロールに必要なさまざまなプロパティをすべて設定できます。

各コントロールが継承する場合、そのロジックを共有し、乾燥している:)

+0

もちろん、彼がWinFormsを使用している場合、それらはすでに特定の基本クラスから継承しています。 –

+0

基底クラスは、これらのクラスからの例 制御用 を継承することができ> MyControlと が コントロールになるだろう> MySetupBase> MyControlと –

1

それを行うための良い例がすでにあり、RealPositionを参照してください。このソースは、デザイナーのフォームにコンポーネントを配置し、そこに必要なプロパティを指定するだけで、プロジェクトのフォーム/コントロールの位置を保存するように変更されました。 MSDNのIExtenderProviderISupportInitializeもご覧ください。

関連する問題