.NET ROOM.NET ROOMトップへCOMRADE総合トップへ
「5:コントロールの設定値を永続化する」へ



5:コントロールの設定値を永続化する

 ・はじめに
 ・設定値を永続化する方法
 ・デザイン画面とInitializeComponentメソッド
 ・自動生成される内容
 ・各パターンの自動生成の実装方法
 ・ネストされたプロパティの永続化
 ・プロパティ値を保存したくない場合
 ・ソースコードの自動生成に関する注意点
 ・暗号

 ◆付録 (本稿で取り上げたソースコードおよびサンプルプログラム)
   \ConstantPersistedPropertySample
     パターン1のサンプル
   \PropertyPersistedByConstructorSample
     パターン2のサンプル
   \PropertyPersistedByStaticInstanceSample
     パターン3のサンプル
   \CollectionPersistanceSample
     パターン4のサンプル
   \NestedPropertiesSample
     ネストされたプロパティの永続化サンプル
   \NonPersistedPropertiesSample
    プロパティ値を保存しないサンプル

はじめに

 前々回の記事で説明したように、デザイン時のコントロールの設定を変更するには、
設定値を永続化できないと意味がありません。
そこで、設定値の永続化について説明する前準備として、
前回はオブジェクトのシリアライズに関して説明しました。

 今回は、ようやく自作コントロールをVisual Studio .NET(以下VS.NET)上で
カスタマイズした場合の設定値を永続化する方法について説明してゆきます。



設定値を永続化する方法


 VS.NETでのコントロールの設定の永続化するには、以下の方法があります。

@変更をVS.NETが自動生成するコードに反映する(自動生成するコードを変更する)
A設定をファイルに保存する
B設定をレジストリに保存する


VS.NETに付属する標準コントロールは、@の方法で設定が保存されます。
また、AとBの方法はアプリケーションでは一般的ですが、コントロールはアプリケーションで
使用されるものであるため、あまり一般的な方法とはいえないかもしません。
そのため、ここでは@の方法(コードの自動生成による設定の保存)に絞って解説することにします。


ページトップへ


デザイン画面とInitializeComponentメソッド

 VS.NETでフォームを新規作成すると、新しいクラスのコンストラクタとともに、
以下のメソッドが必ず生成されています。

    private void InitializeComponent()

 この部分はC#では#region〜#endregionブロックの間に挟まれているため、
デフォルトの設定のままだと、隠れています。[注1

 この部分をVS.NETのソースエディタ上の田のような形のアイコンをクリックして表示してみると、
設定内容に伴ったソースコードが自動生成されていることがわかります(図1)。

図1:VS.NETによって自動生成されたソースコード



 自作のクラスをエディタで一から作成した場合でも、このInitializeComponentメソッドを用意しておけば、
VS.NETで作成したクラス同様に変更結果がデザイン画面に反映されます。

 Formクラスの派生クラスをVS.NETで作成した場合などは、
このメソッドはコンストラクタで呼び出されています。
しかし、実際にはこのメソッドはどこからも呼び出されなくてもデザイン画面に反映されます。
反対に、コンストラクタにいくらコードを追加しても、InitializeComponentメソッドに変更がない場合は、
VS.NETのデザイン画面には反映されません。


---------------------------------------------------------------------------
注1)この部分の設定の変更方法は「2:イベントハンドラの登録と独自イベントの作成」
記事を参照してください。



.NET Roomトップへ | ページトップへ | 次へ