1,453
社区成员




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