读书人

怎么在程序中限制某个属性的范围比如:

发布时间: 2012-12-16 12:02:32 作者: rapoo

如何在程序中限制某个属性的范围比如:Location,点进内涵更非富
本帖最后由 zzc6913 于 2012-11-18 01:43:00 编辑 编写了一个lable控件的拖动程序,发现有一个bug就是控件可以被拖动到窗体以外的地方,不知如何解决,暂时思路希望能够限制lable.Location的X和Y的值的范围来限制控件的可移动范围,不知道思路对不对。
下面贴上程序,如果还有老师有更好的解决办法,欢迎指导~~


Dim ss As Boolean
Dim mov As Point
Private Sub Label1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown
ss = True
mov = New Point(e.X, e.Y)
End Sub


Private Sub Label1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseUp
ss = False
End Sub

Private Sub Label1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove
If ss = True Then
Dim a, b As Integer
a = mov.X - e.X
b = mov.Y - e.Y
Me.Label1.Location = New Point(Me.Label1.Location.X - a, Me.Label1.Location.Y - b)
ElseIf ss = False Then
Me.Label1.Location = New Point(Me.Label1.Location.X, Me.Label1.Location.Y)
End If
End Sub

Private Sub Label1_Move(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Move
If Me.Label1.Location.X <= 0 Then
Dim a, b As Integer
a = mov.X - Me.Label1.Location.X
b = mov.Y - Me.Label1.Location.Y
Me.Label1.Location = New Point(0, Me.Label1.Location.Y - b)

End If
End Sub

[最优解释]
你不是已经判断其 X 坐标是否 <=0 了么?

看懂自己的代码先。
[其他解释]
引用:
编写了一个lable控件的拖动程序,发现有一个bug就是控件可以被拖动到窗体以外的地方,不知如何解决,暂时思路希望能够限制lable.Location的X和Y的值的范围来限制控件的可移动范围,不知道思路对不对。
以测试为准。csdn上任何回复,都比不上你自己动手测试。
------其他解决方案--------------------


思路有,不会写。怎么限制这个范围。
[其他解释]
这个判断不好使,测试了一下,如果到了边界还往外拖,会出现花屏现像类似于延时造成的重影~~
[其他解释]
另外这个是判断,我思想本是希望直接限制location的最大和最小值。不过貌似这个思路也不对~~
[其他解释]
该回复于2012-11-18 12:34:09被管理员删除

读书人网 >VB Dotnet

热点推荐