Matt Stoecker
Microsoft Corporation
August 2006
適用対象:
Microsoft Visual C# 2005
Microsoft .NET Framework 2.0
要約: Visual C# 2005 の新機能を使用してアプリケーション設定およびユーザー設定を操作する方法を説明します (5 ページ)。
目次
はじめに
アプリケーション設定とユーザー設定
デザイン時に新しい設定を作成する
実行時に設定を使用する
別の設定のセットを使用する
まとめ
はじめに
.NET Framework 2.0 では、アプリケーション実行のセッション間で持続する値を作成およびアクセスできます。これらの値は "settings (設定)" と呼ばれます。設定は、ユーザー設定や、アプリケーションで使用する必要のある有効な情報を表します。たとえば、アプリケーションの配色のユーザー設定を格納する一連の設定を作成する場合があります。または、アプリケーションで使用するデータベースを指定する接続文字列を格納する場合があります。設定を使用すると、アプリケーションにとって重要な情報をコードの外部で持続し、個別のユーザー設定を格納するプロファイルを作成することが可能になります。
Visual Basic 2005 には My 名前空間を使用して設定にアクセスする簡単に使用できるメカニズムが用意されていますが、Visual C# 2005 にはそのような名前空間はなく、設定へのアクセスは若干難しくなっています。それでも、C# では Properties 名前空間にアクセスすることで設定を使用できます。ここでは、アプリケーション設定とユーザー設定の違い、デザイン時の新しい設定の作成、実行時の設定へのアクセス方法、アプリケーションでの複数の設定のセットの組み込み方法について説明します。
アプリケーション設定とユーザー設定
設定には 4 つのプロパティがあります。
- Name: 設定の Name プロパティは、実行時に設定値にアクセスする際に使用する名前です。
- Type: 設定の Type は、設定が表す .NET Framework の型です。設定には任意の型を使用できます。たとえば、色のユーザー設定を格納する場合は System.Color 型になります。
- Scope: Scope プロパティは、実行時のアクセスの範囲を表します。Scope プロパティには、Application と User の 2 つの値を使用できます。これらについてはこの項で詳しく説明します。
- Value: Value プロパティは設定にアクセスした際に返される値を表します。値の型は、Type プロパティが示す型になります。
これらのプロパティのほとんどは一目瞭然です。Name、Type、および Value はプログラマがよく使う概念です。Scope プロパティについては説明が必要です。設定では、アプリケーション スコープとユーザー スコープの 2 つのスコープが使用可能です。アプリケーション スコープを持つ設定は、ユーザー設定にかかわらずアプリケーションが使用する設定を表します。一方、ユーザー スコープを持つ設定は、一般に実際のアプリケーションにとってさほど重要でなく、多くは基本設定やその他の一般的な値に関連付けられています。
アプリケーション スコープとユーザー スコープの設定の決定的な違いは、ユーザー スコープの設定では実行時の読み取り/書き込みが可能であり、値がコードで変更および保存されることです。アプリケーション スコープの設定は、実行時に読み取り専用になります。読み取り可能でも、書き込みはできません。アプリケーション スコープの設定は、デザイン時、または設定ファイルの手動による変更によってのみ変更することができます。
デザイン時に新しい設定を作成する
設定デザイナを使用して、デザイン時に新しい設定を作成できます。設定デザイナはよく使われるグリッド形式のインターフェイスであり、新しい設定を作成し、それらの設定にプロパティを指定できます。新しい設定ごとに [名前]、[型]、[スコープ]、および [値] を指定する必要があります。設定を作成したら、この記事で後述するメカニズムを使ってコードで評価できます。
デザイン時に新しい設定を作成するには
- ソリューション エクスプローラで、プロジェクトの [プロパティ] ノードを展開します。
- ソリューション エクスプローラで、新しい設定を追加する .settings ファイルをダブルクリックします。このファイルの既定の名前は Settings.settings です。
- 設定デザイナで、設定の [名前]、[型]、[スコープ]、および [値] を指定します。各行は 1 つの設定を示します。図 1 に、設定デザイナの例を示します。
図 1. Visual Studio 2005 設定デザイナ
デザイン時に既存の設定の値を変更する
設定デザイナでは、以下の手順に従って、デザイン時に既存の設定の値を変更することもできます。
デザイン時に既存の設定の値を変更するには
- ソリューション エクスプローラで、プロジェクトの [プロパティ] ノードを展開します。
- ソリューション エクスプローラで、新しい設定を追加する .settings ファイルをダブルクリックします。このファイルの既定の名前は Settings.settings です。
- 設定デザイナで、変更する設定を探し、[値] 列に新しい値を入力します。
アプリケーション セッション間で設定の値を変更する
アプリケーションのコンパイルおよび展開後、アプリケーション セッション間で設定の値を変更する必要が生じる場合があります。たとえば、適切なデータベースの場所を示すように接続文字列を変更する場合があります。アプリケーションのコンパイルおよび展開後はデザイン時ツールを使用できないため、手動でファイルの設定値を変更する必要があります。
アプリケーション セッション間で設定の値を変更するには
Microsoft メモ帳またはその他のテキスト エディタあるいは XML エディタを使用して、アプリケーションに関連付けられた <アセンブリ名>.exe.config ファイルを開きます。
変更する設定のエントリを探します。以下に例を示します。
<setting name="Setting" serializeAs="String"> <value>これが設定値です</value> </setting>
設定の新しい値を入力し、ファイルを保存します。
実行時に設定を使用する
実行時にコードを通じてアプリケーションで設定を使用できます。アプリケーション スコープの設定の値には読み取り専用でアクセスできます。ユーザー スコープの設定の値は読み取りおよび書き込みが可能です。C# の Properties 名前空間を通じて設定を使用できます。
実行時に設定を読み取る
Properties 名前空間を使用して、アプリケーション スコープとユーザー スコープの両方の設定を実行時に読み取ることが可能です。Properties 名前空間は、Properties.Settings.Default オブジェクトを使用して、プロジェクトのすべての既定の設定を公開します。設定を使用するコードを作成する際、すべての設定が IntelliSense に表示され、厳密に型指定されます。そこで、たとえば、System.Drawing.Color 型の設定がある場合は、次の例のように、最初にキャストせずに使用できます。
this.BackColor = Properties.Settings.Default.myColor;
実行時にユーザー設定を保存する
アプリケーション スコープ設定は読み取り専用であり、デザイン時、またはアプリケーション セッション間の <アセンブリ名>.exe.config ファイルの編集によってのみ変更されます。ただし、ユーザー スコープ設定では、任意のプロパティ値を変更するのと同様に、実行時の書き込みが可能です。新しい値はアプリケーション セッションの間持続します。Settings.Save メソッドを呼び出すことで、ユーザー設定への変更をアプリケーション セッション間で持続できます。これらの設定は User.config ファイルに保存されます。
実行時にユーザー設定を書き込み、持続するには
次の例のように、ユーザー設定にアクセスし、新しい値を割り当てます。
Properties.Settings.Default.myColor = Color.AliceBlue;
ユーザー設定への変更をアプリケーション セッション間で持続する場合は、次のように Save メソッドを呼び出します。
Properties.Settings.Default.Save();
別の設定のセットを使用する
アプリケーションで複数の設定のセットを使用する必要がある場合があります。たとえば、開発中のアプリケーションで特定のグループの設定が頻繁に変更されるような場合、他の設定が影響を受けることなくファイルごと置換できるように、それらの設定のすべてを単一のファイルに分離するのは良い方法です。Visual Studio 2005 では、複数の設定のセットをプロジェクトに追加できます。追加の設定のセットには、自身のノードで生成された設定オブジェクトを使用してアクセスできます。たとえば、SpecialSettings という名前の設定のセットをプロジェクトに追加した場合は、Properties.SpecialSettings オブジェクトのコードを通じてそこに含まれる設定にアクセスします。
別の設定のセットを追加するには
- [プロジェクト] メニューの [新しい項目の追加] をクリックします。[新しい項目の追加] ダイアログ ボックスが開きます。
- [新しい項目の追加] ダイアログ ボックスで [設定ファイル] を選択します。
- [名前] ボックスで、"SpecialSettings.settings" などの設定ファイルの名前を付け、[追加] をクリックして、ファイルをソリューションに追加します。
- ソリューション エクスプローラで、新しい設定ファイルを [プロパティ] フォルダにドラッグします。これで、新しい設定をコードで使用できるようになります。
- 他の設定ファイルと同様に、このファイルに設定を追加し、使用します。Properties.SpecialSettings オブジェクトを通じてこの設定グループにアクセスできます。
まとめ
この記事では、C# アプリケーションで設定を使用して、アプリケーションおよびユーザーの両方に関連する設定を保存および管理する方法について説明しました。ここでは、デザイン時の設定の追加方法、実行時の設定の読み書きの方法、およびアプリケーションへの追加の設定のセットの組み込み方法について説明しました。詳細については、次のリソースを参照してください。
Microsoft .NET Framework Developer Center の Windows フォーム
WindowsForms.NET (英語)
Windows Forms Documentation Updates Blog (英語)