従来、Windowsアプリケーションの設定は、レジストリを使ったり、*.iniファイルを使ったりしていたわけですが、最近は、xml が主流です。と言いますか、レジストリだったり xml だったりアプリケーション毎にばらばらです。
そんなモノだから、設定関係で誤射しそうな方も出て来ます。
なので、少し裏技ちっくですが、手軽にxmlから読み書きする方法を晒しておきます。
最初に画面はこんな感じ。
<001>
右のグリッドは、プロパティグリッド(PropertyGrid)と言ってお手軽にクラスのプロパティを変更できるものです。Visual Studio でも使われていて、この手の変更にぴったりなのです。
そんな感じで、xmlアクセスはこんな感じ。
using System.IO;
using System.Xml.Serialization;public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();// 初期値
setting = new MySetting();
this.propertyGrid1.SelectedObject = setting;
}// アプリケーションの設定
MySetting setting;// 保存
private void button1_Click(object sender, EventArgs e)
{
setting.Save(“setring.xml”);
}
// 読み込み
private void button2_Click(object sender, EventArgs e)
{
setting = setting.Load(“setring.xml”);
// プロパティグリッドに再設定
this.propertyGrid1.SelectedObject = setting;
}
}
/// <summary>
/// 設定用のクラス
/// </summary>
public class MySetting
{
// 設定を保存
public void Save(string filename)
{
XmlSerializer xs = new XmlSerializer(this.GetType());
FileStream fs = new FileStream( filename, FileMode.Create );
xs.Serialize(fs, this);
}
// 設定を読み込み
public MySetting Load(string filename)
{
XmlSerializer xs = new XmlSerializer(this.GetType());
try
{
FileStream fs = new FileStream(filename, FileMode.Open);
MySetting me = (MySetting)xs.Deserialize(fs);
return me;
}
catch
{
// 最初の場合は初期値
return new MySetting();
}
}
// 以下 public で設定を羅列// 数値
public int X { get; set; }
public int Y { get; set; }
// 文字列
public string Version { get; set; }
// 構造体
public Point XY { get; set; }
// 更新日時
public DateTime UpdateDate { get; set; }
}
設定用のクラス(MySetting)を作っておきます。
設定の保存は、Saveメソッドで、シリアライズで出力。
設定の読み込みは、Loadメソッドで、シリアライズで入力。
設定自体は、public プロパティを作っておきて、何処からもアクセスできるようにします。こういう風に、構造体も使えるので結構便利。
シリアライズされたXMLファイルはこんな感じ
<?xml version=”1.0″?>
<MySetting xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema“>
<X>100</X>
<Y>200</Y>
<Version>1.0.0</Version>
<XY>
<X>10</X>
<Y>20</Y>
</XY>
<UpdateDate>2010-09-01T11:46:30</UpdateDate>
</MySetting>
このファイルを手書きで書き換えることもできるので、お手軽の設定の変更ができます。
参照先はこちら
@IT:.NET TIPS PropertyGridコントロールを利用するには? – C# VB.NET Windowsフォーム
http://www.atmarkit.co.jp/fdotnet/dotnettips/285propertygrid/propertygrid.html
PropertyGridコントロールの使い方: .NET Tips: C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/control/propertygrid.html#use
オブジェクトの内容をXMLファイルに保存、復元する: .NET Tips: C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/file/xmlserializer.html
おぉぉ・・・これは感謝(´・ω・)ス
早速、これは実装させていただきます。
ナイス記事で感謝。
この手のモノは、経験があると手早いので、情報共有ということで。
これからは、この上に何を作るか、ですから。
ピンバック: 弘子の日記 » Blog Archive » 手書きブログ 裏ワザの相談