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メソッドに次のようなコードが追加されます。(都合により、途中で改行しています。)
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
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メソッドを呼び出して、手動で保存する必要があります。
//プロジェクトの名前が"ProjectName"のとき、設定を保存する
global::ProjectName.Properties.Settings.Default.Save();
なお、設定のScopeをApplicationとしたときは、実行時に値の保存はできません。値を変更するには、app.config(アプリケーションの実行ファイルと同じフォルダに作成される、"(EXEファイル名).config"ファイル)を編集します。
Visual Studio .NET 2003以前では、動的プロパティを使用します。動的プロパティによるアプリケーションの設定によると「動的プロパティを使用すると、アプリケーションのプロパティ値の一部を外部ファイルに格納し、アプリケーションの実行時に読み込むことができます。これにより、プロジェクトを配置した後でも、アプリケーションを再コンパイルせずにプロパティ値を変更できます。」とのことです。
Form1にあるButton1コントロールのTextプロパティを動的に格納する例を示します。
1.Button1コントロールのプロパティウインドウの「(DynamicProperties)」-「(詳細)」で「'Button1'の動的プロパティ」ダイアログを表示させます。
2.「プロパティ」で「Text」を指定し「OK」ボタンをクリックします。その後プロジェクトに「App.congif」(Webアプリケーションでは web.config)というファイルが追加され、このファイルにButton1コントロールのTextプロパティの内容が格納されます。「App.congif」の内容は次のようになります。
<?xml version="1.0" encoding="shift_jis"?> <configuration> <appSettings> <!-- ユーザー アプリケーションおよび構成されたプロパティ設定をここに挿入します。--> <!-- 例 : <add key="settingName" value="settingValue"/> --> <add key="Button1.Text" value="Button1" /> </appSettings> </configuration>
3.作成された「App.congif」ファイルはEXEファイルと同じフォルダに「(EXEファイル名).config」という名前でコピーされます。このファイル内の「value="Button1"」を「value="ボタン1"」と書き換えるとButton1コントロールのTextが「ボタン1」に変わります。
動的プロパティはアプリケーション構成ファイルに格納されますので、「「アプリケーション構成ファイル」を使用して設定を読み込む」のページも参考になるでしょう。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。