控制调整鼠标移动或鼠标拖动的大小
问题描述:
我正在创建一个简单的程序,使用Excel VBA,这将允许我在运行时随着鼠标移动或拖动鼠标来调整控件的大小。然而,似乎我得到不同的结果控制调整鼠标移动或鼠标拖动的大小
我不知道为什么我得到一个不同的最终宽度的结果,但在这里是如何我做它:
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
initialx = X
initialy = Y
xmove = True
End Sub
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Dim newx, newy As Single
If xmove = True Then
newx = Math.Abs(X - initialx)
newy = Math.Abs(Y - initialy)
TextBox1.Width = TextBox1.Width + newx
End If
End Sub
和这里的如何我的形式看起来像:
正如你在截图中看到,该文本框的宽度应以9增加,因为它是由鼠标光标最初点击鼠标光标(位置),涵盖距离在控制上。
而我坚持这一点。为什么它不按预期工作?
答
它需要全局变量initialWidth。
Dim initialX, initialY, xmove, initialWidth
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
initialX = X
initialY = Y
initialWidth = TextBox1.Width '<~~setting initialWidth
xmove = True
TextBox2.Value = initialX
TextBox3.Value = initialY
End Sub
Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As _
Integer, ByVal X As Single, ByVal Y As Single)
Dim newx, newy As Single
If xmove = True Then
newx = Math.Abs(X - initialX)
newy = Math.Abs(Y - initialY)
'TextBox1.Width = TextBox1.Width + newx
TextBox1.Width = initialWidth + newx
TextBox5.Value = newx
TextBox6.Value = newy
End If
End Sub
每次鼠标移动触发时,增加文本框的大小,即使你曾* *调整从之前移动(所以目前的宽度已经比原来的宽度以上) –
我不我不知道什么是错,但我从来没有想到这一点。它现在按预期工作。谢谢你的提示! – kcodes
没问题 - 找出你自己以外的其他人的问题更容易! –