アプリケーションでは通常、「ツール→オプション」等のメニューで、プログラムの動作内容をユーザがカスタマイズできることが多いです。
本記事では、C#のプログラムにて、ユーザが設定画面で入力した情報をapp.configで管理する手順を説明します。
1.設定画面を作ります
下記は、設定画面のサンプル画像です。Formを使って普通に作ればOKです。
2.設定画面のOK,キャンセルボタンに対してハンドラを定義します
//********************************************************************* /// <summary> OKがクリックされたときのハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> //********************************************************************* private void BtnOk_Click( object sender, EventArgs e ) { DialogResult = DialogResult.OK; Close(); } //********************************************************************* /// <summary> キャンセルがクリックされたときのハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> //********************************************************************* private void BtnCancel_Click( object sender, EventArgs e ) { DialogResult = DialogResult.Cancel; Close(); } |
3.app.configで管理したい設定項目欄のApplicationSettings->PropertyBindingを選択し、右にある”…”をクリックします

4.管理したいプロパティを選択し、新規をクリックします

5.Nameに管理項目のキーを入力し、OKをクリックします
(キーはプログラム内で一意な必要があります)

6.設定画面の呼出元を、以下のような感じで作ります
設定内容を保存するには、プログラムから明示的にsave()をコールする必要があります。
//********************************************************************* /// <summary> 設定ボタンクリック時のハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> //********************************************************************* private void MenuItem_Setting_Click( object sender, EventArgs e ) { FrmSetting form = new FrmSetting(); DialogResult result = form.ShowDialog(); if ( !result.Equals( DialogResult.OK ) ) { // 設定内容を読み込みなおす Properties.Settings.Default.Reload(); return; } // 設定内容を保存する Properties.Settings.Default.Save(); } |
以上の手順で、プログラムが終了しても設定内容がapp.configに保持されます。
保存した値は、以下のような感じで取得可能です。
Properties.Settings.Default.Setting_Destination; |
また、app.configファイルのありかですが、VisualStudioでデバッグ実行中は以下の場所にあります。
%LOCALAPPDATA%\Microsoft\プロジェクト名.vhost.exe_hashvalue |
プログラムからapp.configの正確な場所を知りたい場合は、以下の処理で取得できます。
string configPath = System.Configuration.ConfigurationManager.OpenExeConfiguration( System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; |
但し、System.Configuration.ConfigurationManagerを使用するためには、プロジェクトの参照設定でSystem.Configurationを追加しておく必要があります。

関連記事
コメントを残す