2016-08-23 20 views
1

私は現在、C#でWindowsフォームアプリケーションを開発中ですが、実行の間にデータを保持する方法が不思議でしたか?私のアプリケーションは、ユーザーコントロールを動的に作成するボタンを持つ空白のフォームから始まり、それぞれにはテキストボックス(写真のリスト)が入っています。ユーザーは、これらのテキストボックスに書き込む機能と動的に削除する機能を持っています。C#Windowsフォーム - 動的に作成されたオブジェクトのデータを保存する

私はすべてが構築されたアプリケーションを持っていると私はオブジェクトの数を作成することができますが、私は私が閉じて再度開くこととの間でデータを保存することができるかと思いまして。これはVS 2015にあります。

非常に感謝しています!

+1

[シリアル化](https://msdn.microsoft.com/en-us/library/mt656716.aspx)をご覧ください – hankide

+1

データを読み込む必要があります(モデルやデータクラスはありますか?)ユーザーが何かを変更したときに、データの起動、更新および保存を行います。記憶メカニズムは何でも、データベース、ファイルであってもかまいません。 – Maarten

+0

@hankideあなたはシリアライズするものがあると仮定します。ユーザーコントロールまたはテキストボックスはシリアル化できません。 – Maarten

答えて

1

この場合、テキストボックスのリストを作成しての値をにシリアル化してから、何らかの形式で保存することをお勧めします。リスト全体をシリアライズしてシンプルなコードでロードすることは可能です。

編集:Maartenは良い点を持っていましたが、コンポーネント全体をシリアル化できないことを忘れてしまいました。私はあなたが動的にテキストボックスを追加していると仮定しているので、あなたは既にいくつかのリスト/値の配列を持っています。

+0

これは、テキストボックスのリストではなく、テキストボックス*の値の*リストを作成した場合に機能します。 – Maarten

+1

@Maartenはどこで手に入りましたか?独自のクラスでもシリアル化できます –

+0

[System.Windows.Forms.Control](https://msdn.microsoft.com/en-us/library/system.windows.forms.control(v = vs.110) .aspx)も[System.Windows.Forms.TextBox](https://msdn.microsoft.com/en-us/library/system.windows.forms.textbox(v = vs.110).aspx)でも、 ISerializable'または '[Serializable]'属性でマークされています。 [この質問](http://stackoverflow.com/questions/3597472/marking-a-winforms-button-as-serializable)も参照してください。 WinForms UIオブジェクトをシリアル化することはできません。 – Maarten

1

基本的に2つのオプションがあります。

  1. ストアファイルに。
  2. DBに格納します。

状況によっては、Webサービスを呼び出して状態情報をフィードしたい場合があります。その後、再起動時に、あなたはただそれから読み返します。

それとも、それは良いオプションだ場合、あなたは単に情報をローカルファイルを保存し、それから読み取ることができます。データの交換可能性が損なわれ、アクセス権に関する問題が発生する可能性があります。

あなたが店に必要な量の情報がかなり限られている場合は、単純にレジストリにいくつかのキーを書くかもしれません。情報は引き続きローカルになり、アクセスを許可する必要がありますが、それ以外の場合は、データをかなりコンパクトにする必要があります。

関連する問題