|  | 分類:[.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
 
 |