|
分類:[.NET 全般]
2015/06/11(Thu) 15:57:11 編集(投稿者) 2015/06/11(Thu) 15:57:03 編集(投稿者)
.netframework 3.5 VB.NET Visual Studio 2008
動的にユーザコントロールを複数個配置し、 そのユーザコントロール内のボタンをクリックした場合のイベントを、 1つのメソッドで処理しようとしています。
イベントの発生したコントロールを取得したいのですが、 senderオブジェクトにはユーザコントロール内に配置したボタンコントロールが格納されており、 イベントの発生したユーザコントロールが分からなく、困っています。何かよい方法はないでしょうか。
'ユーザコントロール 'Btn1を置いています。 Public Class UserControl1 Public Event Btn1Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn1.Click RaiseEvent Btn1Click(sender, e) End Sub End Class
'フォーム側 Public Class Form1 Private Sub FrmMainGroupMst_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim Kensu As Integer = 99 Dim UserControls() As UserControl1 For i = 0 To Kensu - 1 UserControls = New UserControl1(Kensu - 1) {} UserControls(i) = New UserControl1 UserControls(i).Name = i UserControls(i).Location = New Point(50, 20 + i * 100) Me.pnl1.Controls.Add(UserControls(i)) AddHandler UserControls(i).Btn1Click, AddressOf btnClick Next i End Sub Private Sub btnClick(ByVal sender As Object, ByVal e As MouseEventArgs) '★ここのsenderにbuttonが入っている。 '★本当はUserContols(で何個目のユーザコントロールで発生したイベントか)を取得したい Dim c As UserControl1 c = CType(sender, UserControl1) MessageBox.Show(c.Name) End Sub End Class
|