|
|
連載:VB 6ユーザーのための これならマスターできるVB 2005超入門
第10回 今月は部品化月間 〜 ユーザー・コントロールを作成する
羽山 博
2007/07/17 |
|
|
サンプル・プログラム15 − ユーザー・コントロールを利用するプログラム
では、メニューの[ファイル]−[新しいプロジェクト]を選択して、新しいプロジェクトを作成しよう。今度は、[Windowsアプリケーション]を選択してプロジェクトを作成する。おなじみのフォームが表示されるが、この時点では先ほどのユーザー・コントロールはまだ使えない。
ユーザー・コントロールを、あらかじめ提供されているコントロールと同じように使えるようにするには、コントロールをツールボックスに追加する必要がある。操作は図9のような流れになる。メニューから[ツール]−[ツールボックス アイテムの選択]を選択し、[ツールボックス アイテムの選択]ダイアログ・ボックスで[参照]ボタンをクリックし、作成したDLLファイルを指定すればよい。
[ツール]−[ツールボックス アイテムの選択]を選択
[参照]ボタンをクリック
|
図9 ユーザー・コントロールをツールボックスに追加する |
[ツールボックス アイテムの選択]ダイアログ・ボックスを表示し、[.NET Frameworkコンポーネント]タブで[参照]ボタンをクリックする。[開く]ダイアログ・ボックスが表示されたら、作成したDLLファイルを選択する。DLLファイルはプロジェクト・フォルダの下位にある、bin\Releaseフォルダにある。DLLファイルが選択できたら、ツールボックスにアイコンが表示される。 |
DLLファイルを選択したら、ツールボックスを見てみよう。ユーザー・コントロールのアイコンが表示されているはずだ。今回の場合であれば、「IdeaCard」という名前のアイコンが表示されている。
このアイコンを選択して、フォーム上でドラッグすれば、ほかのコントロールと同じようにフォーム上に配置できる(図10)。
|
図10 ユーザー・コントロールをフォーム上に配置する |
|
|
ツールボックスに表示されたユーザー・コントロールのアイコンをクリックし、
フォーム上をドラッグして配置する。 |
|
これに加えて、必要なほかのコントロールを配置し、コードを書けばプログラムが実行できる。実行結果はテスト・コンテナで試しに実行した場合のプレビュー画面と同じようなものとなる。
以上が、ユーザー・コントロールの作成と、それを利用するプログラムの作成手順である。が、先ほども述べたように、この時点ではユーザー・コントロールにはほとんど機能を追加していない。次にユーザー・コントロールにコードを記述し、プロパティやメソッドが利用できるようにしていこう。
サンプル・プログラム14の拡張 − ユーザー・コントロールにプロパティとメソッドを追加する
作成したユーザー・コントロールに含まれるComboBoxコントロールやTextBoxコントロールは、ユーザー・コントロール内でPrivateとして宣言されているので、それらのプロパティを外部から直接利用することはできない。そこで、それらのプロパティを公開するようなプロシージャを記述してみよう。
再び、SampleClassLibraryプロジェクトを開き、IdeaCard.vbの[コード]ウィンドウを表示して、以下のようにIdeaTextという名前のPropertyプロシージャを記述しよう。
このプロシージャのGet〜End Get部分は、IdeaTextプロパティを参照したときにIdeaTextBoxコントロールのTextプロパティの値を返すためのコードとなっており、Set〜End Set部分は、IdeaTextプロパティに値を設定したときにIdeaTextBoxコントロールのTextプロパティに値を代入するためのコードとなっている。
Public Class IdeaCard
Public Property IdeaText() As String
Get
Return IdeaTextBox.Text
End Get
Set(ByVal value As String)
IdeaTextBox.Text = value
End Set
End Property
End Class
|
|
IdeaCardコントロールのIdeaTextプロパティを定義する |
IdeaTextプロパティは、ユーザー・コントロールに含まれるTextBoxコントロールのTextプロパティを公開したもの。 |
これで、ユーザー・コントロールのIdeaTextプロパティが定義できたのだが、ちょっとイメージがわきにくいかもしれない。そこで、上記のIdeaTextプロパティを定義するPropertyプロシージャの働きを図で見ておこう(図11)。ここでは、ユーザー・コントロールに含まれるTextBoxコントロール「IdeaTextBox」のTextプロパティを、ユーザー・コントロール「IdeaCard」のIdeaTextプロパティとして公開しているが、もちろん、自分で自由にプロパティを定義することもできる。
|
図11 IdeaTextプロパティを定義するPropertyプロシージャの働き |
|
|
IdeaTextプロパティを参照すると、IdeaTextBoxコントロールのTextプロパティを返す。 |
|
|
IdeaTextプロパティに値を設定すると、IdeaTextBoxコントロールのTextプロパティに値が設定される。 |
|
同じようにして、CategoryTextプロパティも作ってみよう。これは、ComboBoxのTextプロパティを公開したものと考えることができる。内容はIdeaTextプロシージャとほとんど同じだ。IdeaTextプロシージャの後に、以下のプロシージャを書けばよい。
Public Property CategoryText() As String
Get
Return (IdeaCategory.Text)
End Get
Set(ByVal value As String)
IdeaCategory.Text = value
End Set
End Property
|
|
IdeaCardコントロールのCategoryTextプロパティを定義する |
CategoryTextプロパティは、ユーザー・コントロールに含まれるComboBoxコントロールのTextプロパティを公開したもの。 |
続いては、既存のプロパティの置き換えてみよう。
業務アプリInsider 記事ランキング
本日
月間