当前位置: 代码迷 >> VB Dotnet >> 关于动态添加自定义控件时,自定义事件传值有关问题
  详细解决方案

关于动态添加自定义控件时,自定义事件传值有关问题

热度:190   发布时间:2016-04-25 02:19:12.0
关于动态添加自定义控件时,自定义事件传值问题
现有自定义控件,,然后我动态添加好多个之后,想让鼠标点击控件时,自动加载某个文件.我把文件地址写到控件的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就行了, 如果是你自己定义的,可以加个参数,将点击对象传过来
  相关解决方案