.NET(C#/VB)で、アプリ設定を読み書き

従来、Windowsアプリケーションの設定は、レジストリを使ったり、*.iniファイルを使ったりしていたわけですが、最近は、xml が主流です。と言いますか、レジストリだったり xml だったりアプリケーション毎にばらばらです。

そんなモノだから、設定関係で誤射しそうな方も出て来ます。

なので、少し裏技ちっくですが、手軽にxmlから読み書きする方法を晒しておきます。

最初に画面はこんな感じ。

<001>

20100901_03.jpg

右のグリッドは、プロパティグリッド(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

 

カテゴリー: 開発 パーマリンク

.NET(C#/VB)で、アプリ設定を読み書き への3件のフィードバック

  1. konica のコメント:

    おぉぉ・・・これは感謝(´・ω・)ス
    早速、これは実装させていただきます。

    ナイス記事で感謝。

  2. masuda のコメント:

    この手のモノは、経験があると手早いので、情報共有ということで。

    これからは、この上に何を作るか、ですから。

  3. ピンバック: 弘子の日記 » Blog Archive » 手書きブログ 裏ワザの相談

コメントは停止中です。