[C#]アプリの設定画面で入力した内容をapp.configで管理する

アプリケーションでは通常、「ツール→オプション」等のメニューで、プログラムの動作内容をユーザがカスタマイズできることが多いです。

本記事では、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を追加しておく必要があります。

関連記事

コメントを残す

メールアドレスが公開されることはありません。