WebSurfer's Home

トップ > Blog 1   |   Login
Filter by APML

Settings.settings の使い方

by WebSurfer 5. June 2021 15:09

.NET Framework アプリで利用できる Settings.settings からの情報の取得方法と、アプリからの情報の設定方法を備忘録として書いておきます。

Settings.settings

例えば Windows Forms アプリでウィンドウの表示位置とサイズを設定するため、上の画像のように Settings.settings に値を格納したとします。

それを以下のコードのように利用できます。

Form1.cs のコード

初回にユーザーがアプリを立ち上げた時、Settings.settings で指定した位置とサイズでフォームが表示されるよう、コンストラクタ Form1 で構成ファイルから値を取得して位置とサイズを設定しています。

その後、ユーザーが表示位置とサイズを変更した場合、次回アプリを立ち上げた時に変更した位置とサイズで表示できるよう、Form をクローズするときのイベントハンドラ Form1_FormClosing で位置とサイズ情報を構成ファイルに書き込んで保存しています。

以上で本題の話は終わりなのですが、その時使われる構成ファイルがどうなっているかについても調べましたので、オマケで書いておきます。

基本的には先の記事「構成ファイルの保存場所」に書いた通りです。それを画像を使ってもう少し詳しく書きます。

一番上の画像のように Settings.settings に値を格納すると、それらは自動的に App.config に反映されます。下の画像を見てください。

App.config

同時に Settings.Designer.cs に、Settings.settings に設定した Name と同じ名前でプロパティが設定され、Value の値がデフォルト値として設定されます。

Settings.Designer.cs

Settings.settings の Type に設定したとおりプロパティは int に型付けられていることに注意してください。型付けられていることが Settings.settings を使うことのメリットでもあります。Scope を User にするとプロパティには setter も含まれるようになり、プログラムから値を変更することができます(Scope が Application の場合は getter のみ)。

アプリをビルドすると、生成される .exe ファイルと同じ場所に、App.config の内容をそのままコピーして xxxxx.exe.config という名前のファイルが作られます。(xxxxx はアプリケーション名。デバッグ用は xxxxx.vshost と異なるので注意してください)

xxxxx.exe.config

アプリを起動すると App.config からではなく、上記の構成ファイルから情報を取得し、それに指定されている位置とサイズでフォームを表示します。ただし、それは初回だけです。

上のコードの画像を見てください。フォームをクローズすると、イベントハンドラ Form1_FormClosing でクローズ時点での位置とサイズ情報を保存するようにしています。そのとき、user.config という構成ファイルを新たに作って情報を書き込みます。(App.config でも xxxxx.exe.config でもない点に注意してください)

user.config

2 回目以降アプリを立ち上げた際は user.config から位置とサイズ情報を取得してフォームを表示します。ユーザーが位置とサイズを変更すればフォームがクローズされる都度その時点での位置とサイズ情報が user.config に書き込まれます。

というわけで、.NET Framework のアプリでは以上の仕組みでユーザーが設定した情報が保持されるようになっているようです。

なお、.NET Core 3.1 の WinForms アプリでも、自分が試した限りですが、上記とほぼ同様に Settings.settings を利用できました。ただし、user.config は .NET Framework 版アプリと同様に生成されるものの、その他の構成ファイルがどのようになっているのかが調べ切れていません。今後の課題ということで・・・

Tags:

.NET Framework

About this blog

2010年5月にこのブログを立ち上げました。その後 ブログ2 を追加し、ここは ASP.NET 関係のトピックス、ブログ2はそれ以外のトピックスに分けました。

Calendar

<<  July 2021  >>
MoTuWeThFrSaSu
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar