連載:VB 6ユーザーのための
これならマスターできるVB 2005超入門

第10回 今月は部品化月間 〜 ユーザー・コントロールを作成する

羽山 博
2007/07/17
Page1 Page2 Page3 Page4

サンプル・プログラム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プロパティを公開したもの。

 続いては、既存のプロパティの置き換えてみよう。


 INDEX
  連載:VB 6ユーザーのためのこれならマスターできるVB 2005超入門
  第10回 今月は部品化月間 〜 ユーザー・コントロールを作成する
    1.サンプル・プログラム14 − アイデアDBのためのユーザー・インターフェイス部品
    2.ユーザー・コントロールをデザインする
  3.サンプル・プログラム15 − ユーザー・コントロールを利用するプログラム
    4.サンプル・プログラム14の拡張 − プロパティとメソッドを追加する
 
インデックス・ページヘ  「これならマスターできるVB 2005超入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH