.net - 在拖放系统的图片框和标签之间建立链接
问题描述
这是一张图片,可以更好地了解正在发生的事情:
(我试图自己解决这个问题,但我什至不确定要搜索的条款。)
我有一个程序,我在画布上添加节点(由图片框表示),画布下面有一个标签来识别它们。当按下按钮时,会创建一个图片框和一个标签,我可以将它们一起在画布上移动。
我在画布上放置了许多节点后出现了我的问题:如果我移动以前放置的图片框,那么最近创建的标签将被分配给旧的图片框。
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
我相信图片框不会出现问题,因为我使用的是“发件人”,但是我认为我不能将其用于标签,因为它们不是调用事件的控件。
有没有办法将标签“链接”到文本框,以便它们一起移动?谢谢
解决方案
同意, 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" ...
推荐阅读
- mariadb - SHA 在 MariaDB 中返回不同的结果
- mysql - mysql中不同格式日期的数据类型
- javascript - 当我从另一个 js 页面调用时 RangeSlider.js 不起作用
- php - React Native iOS 应用程序显示缓存数据
- jquery - CodeMirror 使用 JQuery 展开
- iis - 使用 VS2017 启动 asp.net 核心应用程序会创建新的应用程序池
- javascript - Discord.js 命令输入字符串
- apache-spark - 用于 SQL 子查询的 Spark Cassanda 连接器中 Cassandra 的下推过滤器 - 自定义催化剂规则?
- sympy - sympy 可以解决这个 ODE (y')**2 = y
- php - 如何获取数组php的第一个值