我有一个图像,我在 MouseMove 中编写了代码来突出显示它。这正在完成我想要的是当鼠标离开图像时高光消失但我似乎找不到任何可以做到这一点的事件。我正在使用 Visual Basic 6.0。我已经尝试过 mouseup 和 down 事件,但它们与我的要求不匹配。
谢谢
我有一个图像,我在 MouseMove 中编写了代码来突出显示它。这正在完成我想要的是当鼠标离开图像时高光消失但我似乎找不到任何可以做到这一点的事件。我正在使用 Visual Basic 6.0。我已经尝试过 mouseup 和 down 事件,但它们与我的要求不匹配。
谢谢
Marco Bellinaso 为这个确切的目的编写了一个很棒的小 ocx 控件,他是一位受人尊敬的作者,同时也是 VB 社区优质内容的重要贡献者。
该控件称为“MB MouseHelper”。您可以在http://www.devx.com/vb2themax/CodeDownload/19735从 devx.com 下载它。
替代文字 http://img25.imageshack.us/img25/3985/screencap20100809110523.jpg
使用 VB 的内置MouseMove
事件有两个问题使该控件有用:
MouseMove
取消突出显示图像的事件的部分VB6 中没有这样的事件(尽管 VB.Net 有MouseLeave)。您将需要在表单的 MouseMove 事件中做一些事情(可能还有任何容器控件)。
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Unhighlight the image'
End Sub
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Highlight the image'
End Sub
您还可以将要模拟 mouseleave 事件的图像放在更大的图片中。这样,当您离开内部图片(较小)时,您将点击外部图片的 mousemove 事件。此外,如果您使用框架或标签而不是另一张图片,这也有效
您始终可以对控件进行子类化。 这是一篇描述如何做到这一点的文章。
如果您使用 mouseMove 事件,要关心的一件事是在您想要突出显示的控件中时引发一个标志,并在您退出时引发另一个标志,以免在每次鼠标 xy 更改时重复相同的操作
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' if imageIsHighlighted = true then
' Unhighlight the image'
' imageIsHighlighted = false
' end if
End Sub
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
' if imageIsHighlighted = false then
' Highlight the image'
' imageIsHighlighted = True
' end if
End Sub