はじめに
前回は、チェックボックス付きのユーザーコントロールを作成しました。
今回は、このコントロールを少しカスタマイズしていきたいと思います。
リサイズ対応
ユーザーコントロールは、標準で提供されているコントロールと同様にリサイズを行うことができます。
しかし、前回配置したチェックボックスとテキストボックスはリサイズに対する設定を何も行っていません。このため、ユーザーコントロールをリサイズしても、チェックボックスとテキストボックスは、配置したときのサイズのままとなり、ユーザーコントロールの外枠だけが変わります。
ユーザーコントロールのサイズに合わせて、配置したコントロールのサイズを変えるには、Dockプロパティを使用したり、ユーザーコントロールのResizeイベント内で調整を行う必要があります。
今回は、テキストボックスの横幅だけがリサイズするよう調整を行ってみます。
まず、テキストボックスの幅はユーザーコントロールの幅に合わせるために、AnchorプロパティにTop,Left,Rightを設定します。これで、横方向のリサイズに対応することができます。
次に、縦方向のリサイズですが、高さはテキストボックスと常に等しくなるようにします。
そこで、Resizeイベントに下記のようなコードを記述します。
private void CheckTextBox_Resize(object sender, EventArgs e) { // ユーザーコントロールの高さは常にtextBox1に合わせる this.Height = textBox1.Height; }
以上でリサイズ対応は終了です。
プロパティを作成する
今度は、ユーザーコントロールにプロパティを追加して、プロパティウィンドウに表示されるようにしていきます。
まずは、チェックボックスのチェック状態を変更できるようにます。プロパティ名はCheckedとします。
コードは下記のようになります。見てわかるとおり、普通のプロパティの作成方法と何らかわりません。
public bool Checked { get { return checkBox1.Checked; } set { checkBox1.Checked = value; } }
プロパティを公開する
プロパティは作成しただけでは駄目です。公開設定をしてあげないと、プロパティウィンドウに表示されません。(もちろんプロパティウィンドウに表示する必要がない場合は設定する必要はありません)
プロパティを公開するには Browsable属性にtrueを指定する必要があります。実際のコードは下記のようになります。これでプロパティウィンドウに表示されるようになります。
[Browsable(true)] public bool Checked { get { return checkBox1.Checked; } set { checkBox1.Checked = value; } }
プロパティウィンドウに説明を表示する
プロパティを公開することができたので、今度は説明が表示されるようにしてみましょう。
プロパティウィンドウの下側に表示する説明は、Description属性を使用します。実例は下記の通りです。
[Browsable(true)] [Description("テキスト入力エリアの表示/非表示を切り替えます。")] public bool Checked { get { return checkBox1.Checked; } set { checkBox1.Checked = value; } }
プロパティのカテゴリーを設定する
プロパティはカテゴリーを設定することができます。こちらはCategory属性で設定します。
[Browsable(true)] [Description("テキスト入力エリアの表示/非表示を切り替えます。")] [Category("動作")] public bool Checked { get { return checkBox1.Checked; } set { checkBox1.Checked = value; } }
ここまで入力できたら、ビルドして
フォームにコントロールを貼り付けてみます。
コントロールのリサイズは横方向のみであることを確認してください。
また、プロパティウィンドウには Checkedプロパティが表示されカテゴリーが「動作」となっていること、説明に「テキスト入力エリアの表示/非表示を切り替えます。」と表示されることを確認しましょう。
Checkedプロパティの値が変更されると、チェックボックスのチェック状態が変わることも確認しましょう。
次回は、イベントを作成する方法について説明します。
コメント