新規プロパティの実装

カスタムコントロール作成入門講座初級編

引き続き、前回のコードを改良していきましょう。

前回のコードでは影の色と深さを直接書いていました。これを、前景色などと同じように、プロパティで変更できるようにしたいですね。そこでまずは色と深さを保持するための変数を用意します。クラスの行頭に次のコードを追加してください。

それぞれの変数にはデフォルト値を設定します。そして、OnPaintの影を描画している部分を次のように、変数を使用するように変更します。

これで下準備はできました。いよいよプロパティのコードです。

見慣れない構文が出てきたと思います。C#ではメソッドと区別するためにプロパティ名のあとに()が付きません。VB.NETではPropertyキーワードが付いています。getとsetはアクセサと呼ばれ、getはプロパティの値を取得する時に呼び出され、setは値を設定する時に呼び出されます。また、valueという特別な変数が使われています。この変数には、プロパティウィンドウやアプリケーションのコードなどで設定した値が入っています。

では、F6キーでコンパイルしてみましょう。プロパティウィンドウにShadowColorとShadowDepthが追加されましたね。それぞれの値を変更してみましょう。ちゃんと反映されましたね。このように、プロパティはその特殊な構文を覚えてしまえば、簡単に実装することができます。

せっかくなので、プロパティの書き方をもう少し掘り下げてみましょう。上のコードの場合、setでInvalidateが呼ばれています。そのような追加の処理が必要なく、次のような単純なプロパティを作りたいとします。

この場合、次のように省略した形でコードを書くことができます。

C#の場合、初期値はコンストラクタで設定します。これは、プロパティの自動実装と呼ばれています。

次に、読み取り専用のプロパティの書き方を説明します。実はとても簡単です。

C#の場合は単にgetアクセサを書くだけです。VB.NETの場合はReadOnlyキーワードを付けます。書き込み専用のプロパティも作れます。C#の場合は単にsetアクセサを書くだけ、VB.NETの場合はWriteOnlyキーワードを付けます。

« »

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

« »