vb.net2008关于控件动态拉伸的求助,附代码,有一个小错误,不知如何解决~~请赐教,高分求助
If e.Button = Windows.Forms.MouseButtons.Left Then
Select Case Adjust
Case mPosition.Left
If Oldtt.X >= 0 And Oldtt.X < 5 And Oldtt.Y >= 5 And Oldtt.Y < Me.Label1.Height - 10 Then
Me.Label1.Width = Me.Label1.Width - dx
Me.Label1.Left = Me.Label1.Left + dx
Me.Label1.Cursor = Cursors.SizeWE
End If
Case mPosition.Right
Oldtt.X = e.X
Me.Label1.Width = Me.Label1.Width + dx
Case mPosition.Top
Me.Label1.Top += dy
Me.Label1.Height -= dy
Case mPosition.Bottom
Oldtt.Y = e.Y
Me.Label1.Height += dy
End Select
End If
这是动态拉伸控件的部分代码,主要是实现拉伸功能,现在有个小问题,如果向右拉伸,或向下拉伸,都没问题,如果是向左或向上拉,那么控件的右边界会有花屏现像。个人估计可能是代码执行时有点延时造成的,照上面代码执行,应该是控件先变长,再改变left的位置,不知个人分析的对不对。
不知道真正原因,更不知道如何解决,请赐教~~~
花屏如下图:
[最优解释]
Dim x As Integer = Me.Label1.Left
Dim y As Integer = Me.Label1.Top
Dim wx As Integer = Me.Label1.Width
Dim wy As Integer = Me.Label1.Height
If Oldtt.X >= 0 And Oldtt.X < 5 And Oldtt.Y >= 5 And Oldtt.Y < Me.Label1.Height - 10 And ss = True Then
x = Me.Label1.Left + dx
y = Me.Label1.Top
wx = Me.Label1.Width - dx
wy = Me.Label1.Height
Me.Label1.SetBounds(x, y, wx, wy)
这样就可以了不会出现花屏
[其他解释]
说的有点错误,上述代码其实是点住控件右边界左右拉动时,没有任何问题,点住控件左边界左右拉动时,控件的右边界就会出现上面的花屏问题。上边界和下边界也是如此。
上述代码的if条件可以忽略,只是限制了左边界为了测试用的。不影响拉伸效果。
希望高手可以指点为何点住左边界拉伸会出现如此问题。
[其他解释]
试了很多方法,都不好用,点住拉伸左边界,右边界就是一直出现花屏现像~~
[其他解释]
上述代码是在一个Label1_MouseMove 事件里面进行的。也就是当点住控件弄个边界时,移动鼠标,控件会根据鼠标拖动改变大小。
[其他解释]
猜测可能要更改
Me.Label1.Width = Me.Label1.Width - dx
Me.Label1.Left = Me.Label1.Left + dx
这两句。
更改成可以同时执行的代码段
[其他解释]
是刷新造成的,控件刷新会产生花屏