【发布时间】:2010-08-06 10:45:50
【问题描述】:
我有一个图像,我已经在 MouseMove 中编写了代码来突出显示它。这正在完成我想要的是当鼠标离开图像时高光消失但我似乎找不到任何可以做到这一点的事件。我正在使用 Visual Basic 6.0。我已经尝试过 mouseup 和 down 事件,但它们不符合我的要求。
谢谢
【问题讨论】:
标签: vba vb6 mouseleave
我有一个图像,我已经在 MouseMove 中编写了代码来突出显示它。这正在完成我想要的是当鼠标离开图像时高光消失但我似乎找不到任何可以做到这一点的事件。我正在使用 Visual Basic 6.0。我已经尝试过 mouseup 和 down 事件,但它们不符合我的要求。
谢谢
【问题讨论】:
标签: vba vb6 mouseleave
在 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
【讨论】:
Marco Bellinaso 为这个确切的目的编写了一个很棒的小 ocx 控件,他是一位备受尊敬的作者,同时也是 VB 社区优质内容的重要贡献者。
该控件称为“MB MouseHelper”。您可以从 devx.com 下载它,地址为http://www.devx.com/vb2themax/CodeDownload/19735。
alt text http://img25.imageshack.us/img25/3985/screencap20100809110523.jpg
使用 VB 内置的MouseMove 事件有两个问题使该控件有用:
MouseMove 事件以取消突出显示图像的任何窗口部分【讨论】:
你也可以把你想模拟 mouseleave 事件的图片放在更大的图片里。这样,当您离开内部图片(较小)时,您将点击外部图片的 mousemove 事件。此外,如果您使用框架或标签而不是另一张图片,这也有效
【讨论】:
您始终可以对控件进行子类化。 Here's an article 描述了如何做到这一点。
【讨论】:
如果您使用 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
【讨论】: