2012年10月10日水曜日

[C#] App.config の利用方法

[共通] 当 Blog の投稿に関する基本事項について
→ http://fuunyan.blogspot.jp/2012/09/blog.html


C#で開発を行っていてアプリの固有情報を保存するにあたり、何の制約もないのに ini ファイルを使うことも無かろう・・・って事で C# スタンダードらしい「アプリケーション構成ファイル( App.config )」を利用することにした。
しかし探し方が下手なのか、もっとも単純な使用例(書いて読む)が見当たらなかったので、自分で書いておく。

コードを書く前に
事前準備として system.configuration.dll への参照を追加する必要がある。
ソリューション エクスプローラで右クリック →「参照の追加(R)...」で表示される「参照の追加」ウィンドウが開く。
.NET タブの中から「System.Configuration」を選択して「 OK 」を押下。

お試し環境は、いつもの Button x 2 と ListBox があるフォーム画面です。

// 下記宣言を追加
using System.Configuration;

// app.config の appSettings に情報を設定
private void button1_Click(object sender, EventArgs e)
{
    // System.Configuration.ConfigurationManager を利用するにあたり
    // System.Configuration.dll への参照を追加する必要がある
    // (ソリューション エクスプローラで右クリック → 参照の追加)

    // Configuration オブジェクトを開く(対象ユーザーは「全てのユーザー」を指定)
    Configuration conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

    // 登録情報の作成
    // キー名:KeyName の後ろに通番を付与した書式
    // データ:日付と時間を登録する
    string keyStr = "KeyName" + ConfigurationManager.AppSettings.Count.ToString();
    string valueStr = DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString();

    // 情報の登録 → 保存 → 情報更新(次回アクセス時)
    conf.AppSettings.Settings.Add(keyStr, valueStr);
    conf.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings");
}

// app.config の appSettings から情報を取得
private void button2_Click(object sender, EventArgs e)
{
    listBox1.Items.Add("--- start reading ----------");

    // App.Config からの読み込み
    // AllKeys は全てのキー名を取得してくれる
    foreach (string keyStr in ConfigurationManager.AppSettings.AllKeys)
        // ピンポイントで取得するだけなら下記1行だけで ok (取得先のキー名がわかっている時など)
        listBox1.Items.Add(ConfigurationManager.AppSettings[keyStr]);

    listBox1.Items.Add("--- end reading ----------");
    listBox1.SelectedIndex = listBox1.Items.Count - 1;
}

Button1 を押すことでデータを登録します。
Button2 を押すことで appSettings よりデータを取得します。
取得したデータは ListBox に追加されます。

データが膨大になった場合のセクション分けもできるらしいのですが、時間なので今回はこれまで。

0 件のコメント:

コメントを投稿