现有自定义控件,,然后我动态添加好多个之后,想让鼠标点击控件时,自动加载某个文件.我把文件地址写到控件的image的tag中了.但是现在在传值上我不会了.请教.
代码如下.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If UBound(Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName)) > 0 Then
MessageBox.Show("程序已经打开,请勿重复运行!")
End
End If
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox2.SizeMode = PictureBoxSizeMode.StretchImage
PictureBox1.Image = Image.FromFile(Application.StartupPath + "\data\" + "单间\单间.jpg")
PictureBox2.Image = Image.FromFile(Application.StartupPath + "\data\" + "标间\标间.jpg")
Dim a As New PicCmd.Pic
a.Size = GroupBox2.Size
a.Top = GroupBox2.Top
a.Left = GroupBox2.Left + GroupBox2.Width + 50
a.pImage = Image.FromFile(Application.StartupPath + "\data\" + "标间\标间.jpg")
a.pImage.Tag = Application.StartupPath + "\data\" + "标间\标间.jpg"
'获取文件名称
a.pText = Microsoft.VisualBasic.Left(System.IO.Path.GetFileName(a.pImage.Tag), InStrRev(System.IO.Path.GetFileName(a.pImage.Tag), ".") - 1)
Me.Controls.Add(a)
AddHandler a.pPic.Click, AddressOf mypic_Click '添加事件
AddHandler returnid, AddressOf idReturned '绑定事件和过程
End Sub
'再来个事件,放在声明的地方,就是类里面、过程外面
Private Event returnid(ByVal id As String) '这个事件可以传递值哦~
'普通的单击事件
Private Sub mypic_Click()
RaiseEvent returnid("123")
End Sub
'会传值的事件过程
Private Sub idReturned(ByVal id As String)
'用id变量做点什么吧
MsgBox(id)
End Sub
------解决方案--------------------
a.pPic.Click是你自己定义的,还是系统默认的,如果是系统的click事件,一般都有sender参数,这个就是你点击的对象,你取它的tag就行了, 如果是你自己定义的,可以加个参数,将点击对象传过来