Alois Kraus さんの Blog (たぶん同じ会社の人)
http://geekswithblogs.net/akraus1/articles/64871.aspx
キー / 値 のペアだけを App.config に格納する場合、 < appsettings > セクションを使う
App.Config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Setting1" value="Very" />
<add key="Setting2" value="Easy" />
</appSettings>
</configuration>
昔は、ConfigurationSettings.AppSettings でアクセスしていましたが、.NET 2.0では、
ConfigurationManager.AppSettings を使います。
C#のサンプルコード
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
namespace AppSettings
{
class Program
{
static void ShowConfig()
{
// For read access you do not need to call the OpenExeConfiguraton
foreach (string key in ConfigurationManager.AppSettings)
{
string value = ConfigurationManager.AppSettings[key];
Console.WriteLine("Key: {0}, Value: {1}", key, value);
}
}
static void Main(string[] args)
{
ShowConfig();
// Open App.Config of executable
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Add an Application Setting.
config.AppSettings.Settings.Add("Modification Date",
DateTime.Now.ToLongTimeString() + " ");
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");
ShowConfig();
}
}
}
2回目の ShowConfig() で
Key:Modification Date , Value: 今日の日付
が追加されて出力されることが確認できる。
Windows Formにいたっては、もっと簡単になる!
Settings set = Settings.Default;
string str = set.testSetting;
set.testSetting = "test value"; // Configの値変更
set.Save(); // 変更した値をセーブ
ここで、 set インスタンスの、testSetting プロパティは、
Nameに指定した文字列がそのまま使える。
理由は、裏でSettings.Designer.cs がプロパティを自動生成してくれているから。
ポイント
Scope は User にしないと、書き込みできません。