在VB.NET中为PictureBox添加点击事件

4

我有一个flowLayoutPanel,我在程序中向其中添加新的panelLayout。每个panelLayout中都有一个pictureBox。它们都很好地运作,但我需要检测当图片被点击时。我如何为图片添加事件?我似乎只能找到C#的例子...

我添加图片的代码如下...

        ' add pic to the little panel container
        Dim pic As New PictureBox()
        pic.Size = New Size(cover_width, cover_height)
        pic.Location = New Point(10, 0)
        pic.Image = Image.FromFile("c:/test.jpg")
        panel.Controls.Add(pic)

        'add pic and other labels (hidden in this example) to the big panel flow
        albumFlow.Controls.Add(panel)

我猜在创建图片时,我添加了一个onclick事件。如果可能的话,我还需要获取它的索引!感谢您的帮助!

2个回答

6

使用AddHandler语句订阅Click事件:

    AddHandler pic.Click, AddressOf pic_Click

pic_Click()方法的sender参数可以让你获取图片框的引用:

Private Sub pic_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim pic As PictureBox = DirectCast(sender, PictureBox)
    ' etc...
End Sub

如果您需要获取特定控件的其他信息,例如索引,那么可以使用标签属性(Tag property)。

再次感谢您,汉斯,非常准确!!我使用了pic.tag,一切都完美。 :) - Matt Facer
不要忘记在销毁窗体时删除事件处理程序,否则它们会一直存在并消耗您的资源。 - camainc
这里并不需要。他将控件添加到控件集合中,事件处理程序在表单中。因此,它被处理并且委托引用无法保持表单实例的活动状态。 - Hans Passant

0

将PictureBox1替换为您控件的名称。

Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    'executes when PictureBox1 is clicked
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接