首页 > 解决方案 > 在拖放系统的图片框和标签之间建立链接

问题描述

这是一张图片,可以更好地了解正在发生的事情:

照片

(我试图自己解决这个问题,但我什至不确定要搜索的条款。)

我有一个程序,我在画布上添加节点(由图片框表示),画布下面有一个标签来识别它们。当按下按钮时,会创建一个图片框和一个标签,我可以将它们一起在画布上移动。

我在画布上放置了许多节点后出现了我的问题:如果我移动以前放置的图片框,那么最近创建的标签将被分配给旧的图片框。

Private Sub PictureMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
   If e.Button = Windows.Forms.MouseButtons.Left Then
       sender.top = MousePosition.Y - coord.Y
       sender.left = MousePosition.X - coord.X
       lblLocation.Left = MousePosition.X - coord.X
       lblLocation.Top = MousePosition.Y - coord.Y + 50
   End If
End Sub

我相信图片框不会出现问题,因为我使用的是“发件人”,但是我认为我不能将其用于标签,因为它们不是调用事件的控件。

有没有办法将标签“链接”到文本框,以便它们一起移动?谢谢

标签: .netvb.net

解决方案


同意, UserControl 会更有意义,因为它们都应该始终作为一个“单元”在一起。

属性建议将.Tag是一个快速或临时的解决方案。当您创建它们时,您只需将标签分配给 Tag 属性:

Dim pb As New PictureBox
Dim lbl As New Label
' ... other initialization code ...
pb.Tag = lbl

然后您可以在 MouseMove 事件中检索它:

Dim pb As PictureBox = DirectCast(sender, PictureBox)
Dim lbl As Label = DirectCast(pb.Tag, Label)

' ... do something with "pb" and "lbl" ...

推荐阅读