2017-01-12 8 views
0

私はそれぞれ独自のパブリックプロパティを持つ複数のフォームを持つアプリケーションを構築しています。私はそれらの複数のインスタンスを作成し、ユーザーがメモリ内のプロパティ値を維持するために閉じたときにフォームを非表示にします。私は多くの異なるフォームがあり、頻繁にアクセスされ、私は整理を続けようとしているので、プロパティをより一貫してどこかに移動させたくありません。私はまた、これらのプロパティ値を格納するために未使用の潜在的なフォームをすべて非表示にしたくありません。このような状況を処理する最善の方法は何ですか?複数のWindowsでのプロパティの管理

私はコードを表示せずに何を意味するのか理解できれば幸いです。それが助けになると思うのであれば嬉しいですが、ここでは一般的にしようとしています。私はそれが方法論的な問題だと思っています。

+0

あなたはすでにそれらをどこかに移動することを排除しました。 '#Region'について知っていますか?より多くのOOアプローチは、クラスを使用して、Actor(Customer、Player、Game、Order、Productなど)に関連するデータを格納、管理、検証、保存、ロードすることです。フォームは、そのようなものがユーザーに情報を表示または表示する方法であり、その質問は無関係です。 – Plutonix

+0

私はあなたが何を意味しているかを理解していると思います。私はまだそれの周りに私の頭をラップしようとしています。私は公共の財産を持たないfrmOneを持っているとしましょう。私はdataOneというクラスを作成することができます。それはpublicプロパティです。frmOneが作成されたときに呼び出すか、saveで保存してfrmOneを閉じることができます。それは簡単ですか? – Josh

+0

'dataOne'と' frmOne'はちょっと抽象すぎます。ブラックジャックのシンプルなゲームを考えてみましょう。あなたはカードの '{ランク、スーツ、バリュー、イメージ} 'を示すカードクラスを持っているべきです(そうすべきです)。それは簡単です。デッキクラスには、52個のコレクションを作成し、靴を作るためにシャッフルしたり、ムックを収集したり、カードを扱ったりするタスクがあります。 Gameクラスは、特定のパラメータ(Easyレベル= 1デッキシュー、Med = 3デッキシューなど)を指定することができます。それは5カード引っ張り、7カードスタッドかテキサスホールデムかを制御するかもしれません。さて、フォームはどのようにその中で役割を果たしますか? – Plutonix

答えて

0

Mementoパターンを使用するのが良い方法の1つです。たとえば、擬似コードの場合:

プロパティを持つフォームがあるとします。あなたは、ファイルシステムに格納し、それを取得することができ、フォームはもちろん、メモリを多用であり、あなたはまた、XML属性を使用してForm1Mementoを飾る場合は、今すぐ

' declare memento interface 
Interface IForm1Memento 
    ' declare properties here 
    . . . . . 
    Sub SetMemento() 
    Sub GetMemento() 
End interface  

' inherit in form 
public class form form1 
    inherits IForm1Memento 
    . . . . 
    Sub SetMemento 
      dim m As IForm1Memento = MementoFactory.Get(me) 
      ' here you can do property by property or create reflection based hydrator 
      ' or use AutoMapper (free product) to fill memento object (see below) 
      MementoStorage.Store(key, m) ' this could be a global dictionary or cache like nCache 
    end sub 

    Sub GetMemento 
      dim m As IForm1Memento = MementoStorage.Retrieve(key) 
      ' again, here hydrate your form from memento 
    end sub 

end class 


' inherit interface in memento object 
public class Form1Memento 
    inherits IForm1Memento 
    ' here ho same property implementations as in form1 
end class 

を「思い出し」あなたの特性を持つようにしたいではなくフォーム次回のアプリ起動時にまた、必要に応じてJSONを使用することもできます。

だから、私たちは何の結果を得ましたか? - フォームが終了し、終了して読み込むことができます。実際には、form.loadに記念品をロードし、form.closedに保存することができます。あなたのメモをファイルシステムに保存したり、キャッシュ、辞書、リストなどのメモリに保存することができます。

関連する問題