1

我有一个图像,我在 MouseMove 中编写了代码来突出显示它。这正在完成我想要的是当鼠标离开图像时高光消失但我似乎找不到任何可以做到这一点的事件。我正在使用 Visual Basic 6.0。我已经尝试过 mouseup 和 down 事件,但它们与我的要求不匹配。

谢谢

4

5 回答 5

2

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取消突出显示图像的事件的部分
于 2010-08-09T15:29:58.270 回答
2

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
于 2010-08-06T11:16:24.380 回答
1

您还可以将要模拟 mouseleave 事件的图像放在更大的图片中。这样,当您离开内部图片(较小)时,您将点击外部图片的 mousemove 事件。此外,如果您使用框架或标签而不是另一张图片,这也有效

于 2010-08-07T15:42:49.280 回答
0

您始终可以对控件进行子类化。 这是一篇描述如何做到这一点的文章。

于 2010-08-09T06:43:16.453 回答
0

如果您使用 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
于 2010-08-26T16:14:43.417 回答