「C Sharp 設定情報を保存する」の版間の差分
ナビゲーションに移動
検索に移動
1行目: | 1行目: | ||
==C# 設定情報を保存する== | ==C# 設定情報を保存する== | ||
− | [[C#]] | + | | [[C#]] |
*Windows Form アプリケーションでアプリケーション設定機能を実装 | *Windows Form アプリケーションでアプリケーション設定機能を実装 |
2020年2月15日 (土) 08:30時点における版
目次
C# 設定情報を保存する
| C#
- Windows Form アプリケーションでアプリケーション設定機能を実装
テキストボックスの入力値を設定ファイルに保存する例
適当なWindows Form に、テキストボックスを配置
- txtDatabaseFileNameとする
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>
<blockquote>設定 xmlファイルがどういう理屈でこの場所に作成されるかがいまひとつよくわからない。今回は、以下のフォルダにuser.configとして作成された。</blockquote>
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; }
- 正しく読み込める。
© 2006 矢木浩人