フォームから呼び出したユーザーコントロール内のコントロールのイベントをフォーム側で検知するには?


ナキソウ  2009-03-08 01:35:44  No: 141649

VB2008でプログラミングをしています。
以下のような方法で、フォームに作成したユーザコントロールUserCtrl1を
フォームForm1にあるパネルPanel1に呼び出すようにしています。
作成したユーザコントロールは、フォームのプライベート変数にしてあります。

Private uctrl As Control

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    uctrl = New UserCtrl1
    Me.Panel1.Controls.Add(uctrl)
End Sub

ここで質問ですが、ユーザコントロールにはテキストボックスTextBox1とボタンButton1が配置されているとします。
テキストボックスにアクセスするには、
CType(uctrl.Controls("TextBox1"), TextBox)
でできることは分かったのですが、ボタンButton1のクリックイベントなど、ユーザコントロール上のコントロールのイベントを元フォームForm1側で検知するには
どうすればよいのでしょうか?
宜しくお願いします。


YuO  2009-03-08 22:15:31  No: 141650

AddHandlerを使います。
http://msdn.microsoft.com/ja-jp/library/7taxzxka.aspx

が,ユーザーコントロール中のコントロールに直接アクセスというのは気持ち悪いですね……。
ユーザーコントロールが,内部のコントロールのプロパティやイベントに対応する情報を公開するの方が,
ユーザーコントロールとして完結するのでよいかと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加