.NET TIPS

Windowsフォームで構成ファイルによりプロパティ値を設定するには?

デジタルアドバンテージ 一色 政彦
2005/07/22

 Windowsフォーム・アプリケーションでは、そのフォームおよびフォーム上のコントロールのプロパティの値を、アプリケーション構成ファイル(「<プログラム名>.exe.config」という名前のXMLファイル)から実行時に動的に読み込んで設定することができる。このようにして、プロパティ値を(プログラム・コードとして実装するのではなく)アプリケーション構成ファイルに格納した外部データとして扱えば、アプリケーション構成ファイルの内容を変更するだけで、プログラムの挙動を容易に変更できるようになる。

 これは、1つのプログラムの挙動を利用環境や利用ケースに合わせて変化させたい場合に非常に便利である。例えばあるプログラムにデモ版と製品版の2つのエディションがあり、それぞれのエディションごとにWindowsフォーム上のタイトル文字列を切り替えたいような場合に役立つ。具体的には、(プログラム自体はそのままで)内容が異なる2つのアプリケーション構成ファイルを用意するだけでよい。

 しかもこの機能は、Visual Studio .NET(以降、VS.NET)を使えば、非常に簡単に実装できる。本稿ではその実装方法を示す。

プロパティ値がアプリケーション構成ファイルから設定されるようにする方法

 プロパティの値がアプリケーション構成ファイルから設定されるようにするには、VS.NETの[プロパティ]ウィンドウで、対象となるフォームやコントロールの[(DynamicProperties)]プロパティを設定すればよい。具体的の手順は、次の画面のとおりだ。

VS.NETを使った[(DynamicProperties)]プロパティの設定
プロパティの値がアプリケーション構成ファイルから設定されるようにするには、VS.NETの[プロパティ]ウィンドウで、[(DynamicProperties)]プロパティを設定すればよい。
  アプリケーション構成ファイルに外部データ化したいプロパティを持つフォームやコントロールを選択する。この例では、「textBox1」という名前のTextBoxコントロールを選択している。
  [プロパティ]ウィンドウで[(DynamicProperties)]プロパティの配下にある[(詳細)]プロパティの値を設定する。具体的には、右端に表示される[...]ボタンをクリックして、['<項目名>' の動的プロパティ]ダイアログを表示する。この例では、['textBox1' の動的プロパティ]ダイアログが表示されている。
  ['<項目名>' の動的プロパティ]ダイアログで、外部データ化したいプロパティにチェックを入れる。この例では、Textプロパティにチェックを入れている。
  アプリケーション構成ファイルにおけるキー・マップ名(=プロパティとの結び付けに使われる項目名)を指定する。この例では、デフォルトで指定される「textBox1.Text」というキー・マップ名を指定している。
  [OK]ボタンを押してプロパティ値を確定する。[キャンセル]ボタンを押せば、ここで設定した内容は破棄される。
  アプリケーション構成ファイルのプロパティ内容が確定すると、[ソリューション エクスプローラ]にあるプロジェクトに「app.config」という名前のファイルが追加される(ファイルが既存の場合は、そのファイル内容が更新される)。これがアプリケーション構成ファイルである。なお、プロジェクトをビルドすると、このアプリケーション構成ファイルが「<プログラム名>.exe.config」という名前に変更されて、プログラム(<プログラム名>.exe)が生成されたのと同じフォルダ内に生成される(詳細後述)。
  アプリケーション構成ファイル内に格納されたプロパティが表示される。値として表示されているのは、キー・マップ名(この例では「textBox1.Text」)である。

 上の画面のようにして、アプリケーション構成ファイルに格納するプロパティを設定(=マップ)すると、VS.NETの[ソリューション エクスプローラ]にあるプロジェクトに「app.config」という名前のファイルが追加される(ファイルが既存の場合は、そのファイル内容が更新される)。これがアプリケーション構成ファイルである。

 以後、アプリケーション構成ファイルにマップされたプロパティ(本稿の例では、「textBox1」コントロールのTextプロパティ)を[プロパティ]ウィンドウで編集すると、そのプロパティ値は(ソース・ファイル内にコードとして追加されるのではなく)アプリケーション構成ファイルに外部データとして記述されることになる。

 実際にそのようなプロパティ編集を行っているのが次の画面である。

アプリケーション構成ファイルにマップされたプロパティの編集例
アプリケーション構成ファイルにマップされたプロパティを[プロパティ]ウィンドウで編集すると、そのデータは、Windowsフォームのソース・ファイル(本稿の例では「Form1.cs」)内にコードとして追加されるのではなく、アプリケーション構成ファイル(本稿の例では「app.config」)に外部データとして記述される。
  アプリケーション構成ファイルにマップされたプロパティを持つコントロールを選択する。
  アプリケーション構成ファイルにマップされたプロパティ(アイコンが表示されているプロパティ)の値を編集すると、その値はアプリケーション構成ファイルに格納される。

 では実際に、アプリケーション構成ファイル内にそのプロパティ値が格納されているのかを確認してみよう。次の画面は、アプリケーション構成ファイルをVS.NETのエディタで開いたところである。

アプリケーション構成ファイル(app.config)の内容
VS.NETの[ソリューション エクスプローラ]上のプロジェクトに追加されたファイル「app.config」をダブル・クリックして、VS.NETのエディタで開く。すると、先ほど設定したプロパティ値がXMLのデータで追加されているのが確認できる(赤枠の部分)。

 なお、(すでに前述したが)アプリケーション構成ファイルの「app.config」は、VS.NETによりビルドを行うと、プログラムが生成されるフォルダの中に「<プログラム名>.exe.config」という名前でコピーされる。アプリケーション構成ファイルを実際の運用で活用するには、この「<プログラム名>.exe.config」という形式の名前にしなければならないので注意すること(「app.config」というファイル名は、VS.NETプロジェクトで管理するための名前である)。

 本稿の例で用いたプログラムをビルドすると、最終的に出力されるファイルは次の画面のようになる。

プログラムが生成されたフォルダ内にコピーされたアプリケーション構成ファイルの例
この例では、VS.NETプロジェクト内のアプリケーション構成ファイル「app.config」は、VS.NETのビルドにより生成されたプログラムと同じフォルダに「WindowsApplication1.exe.config」という名前でコピーされる。

 あとは、エディションや環境ごとに、このアプリケーション構成ファイル(本稿の例では「WindowsApplication1.exe.config」)を複製してその内容をテキスト・エディタなどで編集し、実際にプログラムを配布する段階でエディションや環境に合わせてそれらのアプリケーション構成ファイルを切り替えればよい。End of Article

カテゴリ:Windowsフォーム 処理対象:構成ファイル
 
この記事と関連性の高い別の.NET TIPS
アプリケーション設定を活用するには?
独自のアプリケーション設定(.settingsファイル)を活用するには?
VS.NETでデバッグ版/リリース版以外のビルド構成を追加するには?
[ASP.NET]アプリケーション個別の構成ファイルの変更を禁止するには?
Windowsアプリケーションの位置やサイズを保存するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間