トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

C# 設定情報を保存する



目次



記事一覧

キーワード

C# 設定情報を保存する

[C#]

  • Windows Form アプリケーションでアプリケーション設定機能を実装

 テキストボックスの入力値を設定ファイルに保存する例

適当なWindows Form に、テキストボックスを配置

ApplicationSettingsBase クラスを継承して 設定管理クラス AppSettings を作成

  • ApplicationSettingsBaseを継承し、アプリケーション用の設定管理クラスAppSettingsを作成。
  • DtabaseFileName キーで設定を保存させる。
using System.Configuration;

namespace EntityFrameworkTest
{
    sealed class AppSettings : ApplicationSettingsBase
    {
        [UserScopedSetting()]
        [DefaultSettingValue("")]
        public string DatabaseFileName
        {
            get { return (string)this["DatabaseFileName"]; }
            set { this["DatabaseFileName"] = value; }
        }
    }
}

テキストボックスのプロパティと設定クラスをバインドする

appSettings は、プライベートメンバーとして宣言しておく
private AppSettings appSettings = null;
Form の Loadイベントで、設定クラスを初期化しテキストボックスのTextプロパティとバインド
  • コントロールもしくはForm のDataBindings.Add メソッドで、設定クラスの特定のキーと、プロパティをバインドする。
private void ConfigForm_Load(object sender, EventArgs e)
{
    appSettings = new AppSettings();
    txtDatabaseFileName.DataBindings.Add("Text", appSettings, "DatabaseFileName");
}

設定の保存

Form のClosingイベントでSaveメソッドを呼び出し設定を保存させる。
private void ConfigForm_FormClosing(object sender, FormClosingEventArgs e)
{
    appSettings.Save();     
}

試しに動かしてみる

  • 設定し、アプリケーションを終了し、再度起動して、値がセットされていることを確認
  • 正しく保存、再読み込みされた

保存された内容

  • 以下の内容の user.config ファイルが作成され、プロパティの内容が永続化された。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="EntityFrameworkTest.AppSettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <EntityFrameworkTest.AppSettings>
            <setting name="DatabaseFileName" serializeAs="String">
                <value>C:\Users\piroto\Documents\Visual Studio 2008\Projects\EntityFrameworkTest\EntityFrameworkTest\sample.sdf</value>
            </setting>
        </EntityFrameworkTest.AppSettings>
    </userSettings>
</configuration>

設定 xmlファイルがどういう理屈でこの場所に作成されるかがいまひとつよくわからない。今回は、以下のフォルダにuser.configとして作成された。


C:\Users\piroto\AppData\Local\Hewlett-Packard\EntityFrameworkTest.exe_Url_5htezannqikv2ogpq2wtqqlsmmdv0n3s\1.0.0.0

テキストボックスのプロパティとしてではなく利用する

string db_filename = appSettings.DatabaseFileName;

if (!File.Exists(db_filename))
{
    MessageBox.Show("Database File is not exist.", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
               return;
}

  • 正しく読み込める。



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.