哪位大神幫忙解決一下,想添加動態label控制元件,實作用滑鼠拖動位置和改變大小,選中后有8個小方框的那種,最好能達到控制元件在軟體未執行前在vs里的效果
uj5u.com熱心網友回復:
這是拖動位置的代碼,改變大小寫起來太麻煩了,自己寫吧。 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/26885.html
標籤:控件
上一篇:“System.InvalidOperationException”型別的未經處理的例外在 ESRI.ArcGIS.AxControls.dll 中發生
