msdn Online = 10 行シリーズ(番外編)
~ 10 行でズバリ!! - 番外編 ~ 自分流のコントールを作っちゃおう ~
Step 1 : 標準コントロールに機能を追加しよう
Day 2 - プロパティブラウザを活用する
マイクロソフト株式会社 デベロッパーマーケティング本部
デベロッパーエバンジェリスト 佐藤 直樹
最終更新日 2005 年 4 月 20 日
|
|
|
|
.gif) | このコンテンツのポイント |
.gif) | 今回紹介するコード |
[Category("10行シリーズ"),
Description("グラデーション開始色です。")]
public System.Drawing.Color StartColor
{
// 中略
}
[Browsable(false)]
public override Image BackgroundImage
{
// 中略
}
|
|
|
|
|
目次
はじめに
プロパティブラウザの活用方法
分類別表示と説明文の追加
既存プロパティを非表示するには
おわりに
Windows フォームコントロールは、ユーザーインターフェイスの機能をカプセル化した再利用可能なコンポーネントです。標準で多くのコントロールが用意されていますが、独自にコントロールを開発することも可能です。このように独自に開発したコントロール全般をカスタムコントロールと呼びます。
標準コントロールをベースに作成した前回のカスタムコントロールをより標準コントロールの仕上がりに近づけるため、プロパティブラウザを活用する際役に立つ情報を紹介します。
プロパティブラウザは、コントロールやコンポーネントを利用し開発するデベロッパーにとって重要なインターフェイスの一つです。選択したコンポーネントに対する外観や初期値、動作にかかわるプロパティやイベントを、デザイン時にカスタマイズする際使用します。
今回は、プロパティに関する説明文、プロパティブラウザ上での分類表示、プロパティブラウザへの表示/非表示制御をコントロールします。(図1)
.gif)
図 1 : 今回の完成形
分類別表示とは、いわゆるカテゴリ表示です。プロパティやイベントのうち、同じような種類でグループ表示することで、設定したいプロパティへのスムーズなアクセスを実現します。(図2)
.gif)
図 2 : 分類別表示
プロパティやイベントは、そのままではそれがどのような用途に利用されるのか判断するのが容易ではありません。そこで、プロパティに関する説明をプロパティブラウザに対し表示指定します。(図3)
.gif)
図 3 : プロパティに関する説明の表示
これら2つを実現するため、以下の赤字のコードを記述します。
private System.Drawing.Color startColor = Color.FromArgb(168, 186, 212);
[Category("10行シリーズ"),
Description("グラデーション開始色です。")]
public System.Drawing.Color StartColor
{
// 中略
}
private System.Drawing.Color endColor = Color.White ;
[Category("10行シリーズ"),
Description("グラデーション終了色です。")]
public System.Drawing.Color EndColor
{
// 中略
}
private LinearGradientMode gradientMode;
[Category("10行シリーズ"),
Description("線形グラデーションの方向です。")]
public LinearGradientMode GradientMode
{
// 中略
}
なお、この属性の指定方法は以下のように指定しても有効です。
[Category("10行シリーズ")]
[Description("グラデーション開始色です。")]
public System.Drawing.Color StartColor
また、カテゴリにはいくつかの英語名での予約語があります。以下の赤字のCategory 属性のように指定した場合、プロパティブラウザへはローカライズされた文字が表示されます。(図4)
[Category("Action")]
public string ReservedCaterogy
.gif)
図 4 :カテゴリが日本語で表示
以下の表が予約語の一覧です。
| カテゴリ | 日本語表示 | 説明 |
| Action | アクション | 実行できるアクションに関するプロパティ |
| Appearance | 表示 | エンティティの外観に影響するプロパティ |
| Behavior | 動作 | エンティティの動作に影響するプロパティ |
| Data | データ | データに関するプロパティ |
| Default | その他 | カテゴリを持たないプロパティは、既定のカテゴリに属するプロパティとして分類されます |
| Design | デザイン | デザイン時だけ使用できるプロパティ |
| DragDrop | ドラッグ アンド ドロップ | ドラッグ アンド ドロップ操作に関するプロパティ |
| Focus | フォーカス | フォーカスに関するプロパティ |
| Format | 書式 | 書式に影響するプロパティ |
| Key | キー | キーボードに影響するプロパティ |
| Layout | レイアウト | レイアウトに関するプロパティ |
| Mouse | マウス | マウスに関するプロパティ |
| WindowStyle | ウィンドウ スタイル | トップ レベル フォームのウィンドウ スタイルに影響するプロパティ |
標準コントロールでは、BackgroundImageプロパティの設定によってコントロールの背景に指定されたイメージが表示されました。このカスタムコントロールでは、表面を色付けしていますので、このプロパティは設定しても機能しません。そこで、使用しないプロパティをプロパティブラウザから非表示にすることで、不要なプロパティ設定が発生しないように制御することにします。
クラスビューより BackgroundImageプロパティを選択し、右ボタンクリックによるコンテキストメニューから [追加 - オーバーライド] を選択します。(図5)
.gif)
図 5 : クラスビューからオーバーライドするプロパティを指示
以下の赤字で書かれているコードを記述します。
[Browsable(false)]
public override Image BackgroundImage
{
get
{
// TODO: GradientButton.BackgroundImage getter 実装を追加します。
return base.BackgroundImage;
}
set
{
// TODO: GradientButton.BackgroundImage setter 実装を追加します。
base.BackgroundImage = value;
}
}
この Browsable 属性の指定によって、プロパティとしては存在していてもプロパティブラウザに対して非表示することが可能です。(図6)
.gif) | .gif) |
| 図 6 : 指定前 | 図 6 : 指定時 |
プロパティブラウザは開発者にとって、利用頻度の高いインターフェイスです。そのため、カスタムコントロールに対して、標準コントロールと同等の整理された情報提示が求められるといえるでしょう。今回はそのプロパティブラウザに焦点を当て、コントロールの利用者にとって使いやすくなるようコントロールを仕上げていきました。機能を満たすだけではなく、ディテールまで気を利かせて「自分流のコントロール」の完成度を高めて下さい。
ページのトップへ