在vb.net中,如何从私有子对象声明公共变量

在vb.net中,如何从私有子对象声明公共变量,vb.net,variables,private,public,Vb.net,Variables,Private,Public,我正在从一个私有子节点动态创建标签,我希望在用户单击标签时能够执行一些操作。但是,我不能使用“Dim withEvents blah…”,因为它说withEvents不能用于局部变量,但我也不能在我的私有Sub中使用“Public withEvents blah”。我如何做到这一点 谢谢。创建动态控件时,可以为其添加处理程序 Dim mylbl As New Label mylbl.Name = "button1" mylbl.Text = "hi" Me.Controls.Add(mylbl)

我正在从一个私有子节点动态创建标签,我希望在用户单击标签时能够执行一些操作。但是,我不能使用“Dim withEvents blah…”,因为它说withEvents不能用于局部变量,但我也不能在我的私有Sub中使用“Public withEvents blah”。我如何做到这一点


谢谢。

创建动态控件时,可以为其添加处理程序

Dim mylbl As New Label
mylbl.Name = "button1"
mylbl.Text = "hi"
Me.Controls.Add(mylbl)

AddHandler lbl.Click, AddressOf AllLabels_Click
这是你的潜艇

Sub AllLabels_Click(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim lbl As Label = CType(sender, Label)

    MsgBox(lbl.Text)

End Sub

创建按钮时附加click事件处理程序。这不适用于私有变量。如果要将eventhandler添加到控件,必须使用“withEvents”创建控件,这只能对公共变量执行。所谓“variables”,我指的是动态创建的控件。@user2018388,Public vs private是访问控件的方式,而不是连接到事件的方式@user2018388,所有动态添加的控件必须按照matzone显示的方式添加处理程序。@user2018388,听起来处理程序的定义有问题。请注意,在本例中,
Sub-AllLabels\u单击(ByVal sender作为对象,ByVal e作为System.EventArgs)后没有
句柄
关键字。