DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

外部ファイルにコントロールのプロパティを格納する

Visual Studio 2005以降

Visual Studio 2005からは、アプリケーション設定機能を使用します。アプリケーション設定機能については、「Visual Studioでアプリケーションの設定を保存する」で詳しく説明していますので、そちらもご覧ください。

Form1にあるButton1コントロールのTextプロパティを動的に格納する例を示します。なおここでは、プロジェクトの名前が"ProjectName"であるものとします。

1.Button1コントロールのプロパティウインドウの「(Application Settings)」-「(Property Binding)」で「'Button1'のアプリケーション設定」ダイアログを表示させます。

2.リストから「Text」を探し、右のドロップダウンメニューをクリックします。すると、下図のようになりますので、「(新規...)」をクリックします。

アプリケーション設定ダイアログ

3.表示される「新しいアプリケーション設定」ダイアログで、DefaultValue、Name、Scopeを設定します。DefaultValueには既定値を、Nameにはこの設定の名前を設定します。Scopeには、ApplicationかUserかを指定します。Applicationとしたときは、この値はこのアプリケーションを使用するすべてのユーザーが共通に使用し、実行時に値を変更できなくなります。Userとしたときは、ユーザーごとに異なる値を設定でき、実行時に変更もできます(スコープについて詳しくはこちら)。ここでは、DefaultValueを「テストです」、Nameを「Button1Text」、Scopeを「User」とします。

新しいアプリケーション設定ダイアログ

4.「OK」をクリックしてすべてのダイアログを閉じると、設定が作成され、以下のような変更が行われます。

まず、プロパティウィンドウでButton1のTextプロパティの右にアイコンのマークが付きます。

また、プロジェクトプロパティの「設定」ページに、名前が「Button1Text」、型が「String」、スコープが「ユーザー」、値が「テストです」となった設定が追加されます。それに伴い、アプリケーション構成ファイルに要素が追加されます。詳しくは、こちらをご覧ください。

さらに、Button1のあるフォームのDesigner.vb(C#では、Designer.cs)のInitializeComponentメソッドに次のようなコードが追加されます。(都合により、途中で改行しています。)

VB.NET
コードを隠すコードを選択
Me.Button1.DataBindings.Add(New System.Windows.Forms.Binding( _
    "Text", Global.ProjectName.My.MySettings.Default, "Button1Text", True, _
    System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))
Me.Button1.Text = Global.ProjectName.My.MySettings.Default.Button1Text
C#
コードを隠すコードを選択
this.button1.DataBindings.Add(new System.Windows.Forms.Binding(
    "Text", global::ProjectName.Properties.Settings.Default, "Button1Text",
    true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged));
this.button1.Text = global::ProjectName.Properties.Settings.Default.Button1Text;

5.設定のScopeをUserとしたときは、実行時に変更されたButton1.Textの値を保存し、次回起動時に復元することができます。

値の保存と復元は、VB.NETでは自動的に行われます。Button1のTextプロパティを変更して、アプリケーションを終了させると、自動的にその値が保存されます(されない場合もあります。詳しくはこちら)。そして、次にアプリケーションを起動させると、その値が復元され、Button1のTextに設定されます。

C#では、値の保存が自動的に行われません。Saveメソッドを呼び出して、手動で保存する必要があります。

C#
コードを隠すコードを選択
//プロジェクトの名前が"ProjectName"のとき、設定を保存する
global::ProjectName.Properties.Settings.Default.Save();

なお、設定のScopeをApplicationとしたときは、実行時に値の保存はできません。値を変更するには、app.config(アプリケーションの実行ファイルと同じフォルダに作成される、"(EXEファイル名).config"ファイル)を編集します。

Visual Studio .NET 2003以前

Visual Studio .NET 2003以前では、動的プロパティを使用します。動的プロパティによるアプリケーションの設定によると「動的プロパティを使用すると、アプリケーションのプロパティ値の一部を外部ファイルに格納し、アプリケーションの実行時に読み込むことができます。これにより、プロジェクトを配置した後でも、アプリケーションを再コンパイルせずにプロパティ値を変更できます。」とのことです。

Form1にあるButton1コントロールのTextプロパティを動的に格納する例を示します。

1.Button1コントロールのプロパティウインドウの「(DynamicProperties)」-「(詳細)」で「'Button1'の動的プロパティ」ダイアログを表示させます。

動的プロパティダイアログ

2.「プロパティ」で「Text」を指定し「OK」ボタンをクリックします。その後プロジェクトに「App.congif」(Webアプリケーションでは web.config)というファイルが追加され、このファイルにButton1コントロールのTextプロパティの内容が格納されます。「App.congif」の内容は次のようになります。

3.作成された「App.congif」ファイルはEXEファイルと同じフォルダに「(EXEファイル名).config」という名前でコピーされます。このファイル内の「value="Button1"」を「value="ボタン1"」と書き換えるとButton1コントロールのTextが「ボタン1」に変わります。

動的プロパティはアプリケーション構成ファイルに格納されますので、「「アプリケーション構成ファイル」を使用して設定を読み込む」のページも参考になるでしょう。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。