我发现了一些奇怪的行为,这实际上是对我构建的平滑外观应用程序进行了压缩。
我有4张图片:
Image1是主图像,上面有一个mouse_move事件。 Image2是image1顶部的一个不可见图像,它也有一个mouse_move事件。
Image3和Image4充当两个图像的存储空间,这些图像放在image1中,具体取决于哪个mouse_move事件被触发。
如果布尔值“isLocked”为true,则首先检查mouse_move事件,如果是,则不更改图片。
如果我点击image2将“isLocked”设置为true,则图像不会交换。凉!如果我再次点击image2将“isLocked”设置为false,则程序将按预期恢复,图像会按原样交换。
现在问题是,如果我从其他任何地方调用image2_click例程,代码将按预期恢复,但图像不会从该点开始改变。
我尽可能地减少了代码以复制行为,我希望有人能用我的逻辑发现修复/错误。
Dim isLocked As Boolean
Private Sub UserForm_Initialize()
Me.DrawBuffer = 1048576
isLocked = False
End Sub
Private Sub Image1_Click()
Call Image2_Click
End Sub
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Not isLocked Then
If Not Me.Image1.Picture = Me.Image3.Picture Then Me.Image1.Picture = Me.Image3.Picture
End If
End Sub
Private Sub Image2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Not isLocked Then
If Not Me.Image1.Picture = Me.Image4.Picture Then Me.Image1.Picture = Me.Image4.Picture
End If
End Sub
Private Sub Image2_Click()
If isLocked Then
isLocked = False
Else
isLocked = True
End If
End Sub