属性でVisual Studioにヒントを与える

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

C#にもVB.NETにも、「属性」というものがあります。属性は、言語を拡張することなく、付加情報を加えることを可能にする機能です。この付加情報は、コンパイラ-、Visual StudioなどのIDE、その他各種ツールが参照することができます。

例えば、WinAPIなどを呼び出したことがある方は、[DllImport(“user32.dll”)]のような記述をしたことがありますよね。また例えば大きなプロジェクトでは、[obsolete]という、「このメソッドの内容は古いのでもう使わないで」という意味の属性を使ったことがあるかもしれません。

属性もクラスで実装されているので、ユーザー定義の属性を作ることもできます。

上のような特徴がある属性ですが、今私たちが関心があるのはカスタムコントロールです。そして、カスタムコントロールに関係のある属性はたくさんあります。

中級編ではこの、「カスタムコントロールに関係のある属性とそれに付随するコード」を主体にして進めていきます。「関係」とはどのようなものかというと、Visual Studioにヒントを与えて、プロパティウィンドウで、標準のプロパティなどと同じような動作をさせるというものです。

さてそれでは早速、はじめの属性を使ってみましょう。なお、サンプルとして、初級編で扱った影付き文字列を表示するコントロールを使います。ShadowColorとShadowDepthという2つのプロパティが追加されたコントロールですでしたね。

初級編では、この2つのプロパティを公開するところまで行きました。しかし、気づいた方もいるかもしれませんが、これらのプロパティは、プロパティウィンドウで項目順に並べると、「その他」というカテゴリーに入ってしまっています。また、カーソルをそのプロパティの上に持って行っても、プロパティウィンドウの最下部に説明文は表示されません。

そこで登場するのが属性です。

このようになります。説明はあまり必要ないですね。Category属性でカテゴリーを、Description属性で説明文を指定します。VB.NETでは1行に書かなければならないので、行末にアンダースコアが付いていることに注意してください。

なお、属性は次のようにまとめて1行に書くこともできます。

カテゴリーは新たに作ることもできます。例えば[Category(“影”)]のように。

もし、プロパティウィンドウに表示する名前を変えたい場合は、次のようにDisplayName属性を使えば可能です。

数は少ないですが、属性はクラスにも用意されています。コントロールを初めてフォームに貼り付けた時に、プロパティウィンドウでアクティブになるプロパティを指定するためのDefaultProperty。デザイン画面でコントロールをダブルクリックした時に、どのイベントハンドラが作成されるのかを指定するDefaultEventです。

»

コメントをどうぞ

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

»