アプリケーション設定


アプリケーション設定について

http://dobon.net/vb/dotnet/programing/applicationsettingsbase.html

配列を保存する方法を紹介します。


[global::System.Configuration.SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Binary)] を追加します。


[global::System.Configuration.SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Binary)] が削除される場合

Visual Studio IDE で Windows フォームアプリケーションを作成します。Settings.settings を選択して設定(string 型)を作成します。ここではsetting_1とします。C#の一例です。

[C#] 保存


System.Drawing.Color[] objects = new System.Drawing.Color[3];
objects[0] = System.Drawing.Color.Aqua;
objects[1] = System.Drawing.Color.Blue;
objects[2] = System.Drawing.Color.DarkGreen;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter fomatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream memorystream = new System.IO.MemoryStream();
fomatter.Serialize(memorystream, objects);
Properties.Settings.Default.setting_1 = Convert.ToBase64String(memorystream.ToArray());
memorystream.Close();

[C#] 読み出し


System.Drawing.Color[] objects;
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter fomatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.MemoryStream memorystream = new System.IO.MemoryStream(Convert.FromBase64String(Properties.Settings.Default.setting_1));
objects = (System.Drawing.Color[])fomatter.Deserialize(memorystream);
memorystream.Close();

objects へはキャストを行わなくても保存できます。

このほかに System.Collections.Specialized.StringCollection で作成して、Add, AddRange メソッドで追加する方法もあります。XML シリアル化では正しく保存できない事例があることがわかりました。配列を含むクラスを作成してそのクラスを保存する方法も int型、string型などは正しく保存できますが、Color構造体、ユーザーコントロール、独自のクラスを含むものは正しく保存できませんでした。

投稿日: 2014年7月12日 カテゴリー: Windows settings タグ: , , , , , | パーマリンク コメントする.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。