ユーザー コントロールへのコードの追加
更新 : 2007 年 11 月
このレッスンでは、ユーザー コントロールにコードを追加して、フル ネームの表示と新しいプロパティの公開を行う方法について説明します。
ユーザー コントロールにも、標準コントロールと同じように、プロパティ、メソッド、およびイベントがあります。コントロールのイベントを処理するコードの記述や、コントロールのユーザーにどのプロパティを公開するかの判断は、コントロールの開発者が行います。
ユーザー コントロールのイベント処理
ユーザー コントロールの利便性を高めるためには、コントロールのイベントを処理するコードを記述する必要があります。ユーザー コントロールのイベント処理プロシージャを記述するのは、フォームまたはコントロールのイベント処理プロシージャを記述するのと変わりません。
この例では、TextChanged イベント ハンドラを使用して、FirstName、MiddleName、および LastName の各ボックスへの入力時に、その内容で FullName ラベルを更新するイベント プロシージャを記述します。
やってみよう
ユーザー コントロールにコードを追加するには
前のレッスンで作成した NamesUserControl プロジェクトを開きます。プロジェクトを保存しなかった場合は、まず前のレッスン「ユーザー コントロール デザイナについて」に戻って、そのレッスンの手順を完了する必要があります。
ソリューション エクスプローラの NamesControl.vb をクリックし、[表示] メニューの [コード] をクリックします。
コード エディタで、FirstName_TextChanged イベント ハンドラに次のコードを追加します。
Private Sub FirstName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FirstName.TextChanged, MiddleName.TextChanged, LastName.TextChanged ' Display the contents of the three text boxes in the label. FullName.Text = FirstName.Text & " " & MiddleName.Text & " " & LastName.Text End Sub
F5 キーを押してプログラムを実行します。[ユーザー コントロール テスト コンテナ] が開き、ユーザー コントロールが表示されます。
名、ミドル ネーム、および姓を 3 つのテキスト ボックスに入力します。入力時に、FullName ラベルに名前が表示されます。
上で入力したコードを見ると、宣言の Handles 句によって、3 つの TextBox コントロールすべての TextChanged イベントが処理されることがわかります。どのテキスト ボックスを最初に入力した場合でも、入力に合わせて FullName ラベルが常に更新されます。
ユーザー コントロールのプロパティの公開
標準コントロールでは、コントロールのデザイン時と実行時にプロパティの値を設定および取得できます。ユーザー コントロールでも、プロパティを利用できるようにする必要があります。そうすると、デザイン時に [プロパティ] ウィンドウで設定でき、コードでも参照できるようになります。
ユーザー コントロールのプロパティを公開するのは、クラスのプロパティを公開するのと非常によく似ています。大きな違いは、ユーザー コントロールに含まれているコントロールのプロパティも公開できるという点です。クラスと同様に、プロパティを宣言し、Get プロシージャと Set プロシージャにコードを追加します。ユーザー コントロールの中に含まれているコントロールのプロパティを公開する場合、その値を格納するためのプライベート変数を宣言する必要はありません。そのコントロールのプロパティが格納します。
現時点では、FirstName、MiddleName、および LastName の各コントロールに入力されているテキストや FullName ラベルの値を取得する方法は用意していません。コントロールの利便性を高めるためには、これらの値をプロパティとして公開する必要があります。FullName ラベルの値は、外部のコードから変更できないよう、読み取り専用のプロパティとして公開する必要があります。
やってみよう
プロパティを追加するには
コード エディタで、FirstName、MiddleName、および LastName の各値をプロパティとして公開する次のコードを追加します。
Property FirstNameText() As String Get Return FirstName.Text End Get Set(ByVal value As String) FirstName.Text = value End Set End Property Property MiddleNameText() As String Get Return MiddleName.Text End Get Set(ByVal value As String) MiddleName.Text = value End Set End Property Property LastNameText() As String Get Return LastName.Text End Get Set(ByVal value As String) LastName.Text = value End Set End Property
FullName ラベルの値を読み取り専用プロパティとして公開する次のコードを追加します。
ReadOnly Property FullNameText() As String Get Return FullName.Text End Get End Property
F5 キーを押してプログラムを実行します。
[ユーザー コントロール テスト コンテナ] で、[プロパティ] グリッドの一番下にスクロールし、FirstNameText プロパティを選択します。名前を入力し、FullNameText プロパティを選択します。FirstName テキスト ボックスに名前が表示され、FullNameText プロパティと一致します。
他のプロパティのいくつかを、[プロパティ] グリッドとコントロール自体の両方で変更してみて、両者の関係を確認します。これは、このコントロールのユーザーがデザイン時に経験することと同じです。
[ファイル] メニューの [すべてを保存] をクリックして変更を保存します。
次の手順
このレッスンでは、ユーザー コントロールでイベントを処理する方法と、いくつかのプロパティを公開する方法について説明しました。プロパティの詳細について学習するには、「詳細 : 名前付き値を持つプロパティの追加」に進んでください。また、次のレッスンでは、作成したコントロールを使用する方法を説明します。
次のレッスン : 「ユーザー コントロールのテスト」