带处理程序的动态标签

时间:2012-07-27 19:19:09

标签: vb.net winforms event-handling tags addhandler

我有动态添加到表单上的标签,每个标签都在其标签下有一个链接。 我还有动态标签的AddHandler lbTitle.Click,但是当我尝试这样做时,它不起作用:

Private Sub lbTitle_Click(ByVal sender As Object, ByVal e As EventArgs)
    Process.Start(e.Tag)
End Sub

因为

  

'tag'不是'System.EventArgs'

的成员

如何解决此问题,以便当有人点击动态添加的标签时,它会从标签的标签中启动网址。

2 个答案:

答案 0 :(得分:0)

要添加事件处理程序,您需要AddressOf Operator

AddHandler lbTitle.Click, AddressOf lbTitle_Click 

要在事件处理程序中获取对Label的引用,可以使用sender参数:

Private Sub lbTitle_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim label = DirectCast(sender, Label)
    Process.Start(label.Tag.ToString())
End Sub

答案 1 :(得分:0)

sender参数是标签,但您需要先将其强制转换为Label类型,然后才能访问其Tag属性。

Process.Start(CType(sender, Label).Tag)

或者,要处理任何类型的控件,您可以将其转换为基本控件类型,而不是:

Process.Start(CType(sender, Control).Tag)