label拖动位置和拖动大小问题vb.net

Hongduke_C 2019-08-10 05:57:30
哪位大神帮忙解决一下,想添加动态label控件,实现用鼠标拖动位置和改变大小,选中后有8个小方框的那种,最好能达到控件在软件未执行前在vs里的效果
...全文
225 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
X-i-n 2019-08-10
  • 打赏
  • 举报
回复
这是拖动位置的代码,改变大小写起来太麻烦了,自己写吧。
        Dim label As New Label With {
            .Text = DateTime.Now.ToString("HHmmssfff")
        }
        AddHandler label.MouseDown, Sub(ss, ee) label.Tag = ee.Location
        AddHandler label.MouseMove, Sub(ss, ee)
                                        If ee.Button = MouseButtons.Left Then label.Location += ee.Location - CType(label.Tag, Point)
                                    End Sub
        Controls.Add(label)
MouseDown和MouseMove的时候需要判断当前操作是“拖动”还是“改变大小”,判断的方法是:MouseDown的时候取坐标,如果鼠标坐标位于8个点内,代表改变大小,否则就是拖动
x介于label.location.x ~ label.location.x+10 或 label.location.x + label.width/2-5 ~ label.location.x + label.width/2+5 或 label.location.x + label.width-10 ~ label.location.x + label.width

并且Y介于label.location.y ~ label.location.y+10 或 label.location.y + label.height/2 -5 ~ label.location.y + label.height/2 +5 或label.location.y + label.height -10 ~ label.location.y + label.height
MoseMove的时候,我上面给出来的就是拖动代码,如果要调整大小,就把width和height加上(当前坐标-原始坐标)的差值。并且还有一个需要注意的地方,往左或者往上,需要保持右下角固定不变,也就是要实时改变label的location

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧