单击事件以动态创建标签VB.NET

时间:2015-11-16 19:26:51

标签: vb.net event-handling

对于大学,我正在创建一个引力场模拟器,其中显示两个质量以及它们将经历的重力的大小和方向。对于质量体,我使用动态创建的椭圆形,这些椭圆形每个都有一个标签,显示质量。这些椭圆形和标签存储在一个列表中。

我需要能够拖放这些主体。对于ovalshapes,我正在使用If OvalShape.ContainsFocus,但由于标签将位于这些椭圆形的顶部,我需要某种方式来测试鼠标是否在标签上。我尝试过使用事件处理程序,但是我收到错误"点击不是system.collections.listarray"对于此代码AddHandler labelArray.Click, AddressOf Me.labelArray_Click

所以我的问题是,是否有方法可以测试是否已单击属于listarray的标签以及是否已单击阵列中的哪个标签。提前致谢

1 个答案:

答案 0 :(得分:1)

您需要将事件处理程序添加到数组中的每个标签

For Each l As Label In labelArray
AddHandler l.Click, AddressOf myClickHandler
Next

然后在处理函数中:

Private Sub myClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim clickedLabel As Label = DirectCast(sender, Label) ' Cast the sending object into a Label object
  ' then do whatever you want with the label such as get it's text and show it in a message box:
    MessageBox.Show("Label text Clicked was: " & clickedLabel.Text)
End Sub