【问题标题】:Hot make a mouse leave event in vb6 over a image在图像上热制作vb6中的鼠标离开事件
【发布时间】:2010-08-06 10:45:50
【问题描述】:

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

谢谢

【问题讨论】:

    标签: vba vb6 mouseleave


    【解决方案1】:

    在 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
    

    【讨论】:

    • 似乎是唯一的选择,我现在放了一个图像数组,所以代码有点重
    • 此方法不可靠。如果您快速将鼠标从包含图像 (Image1) 的按钮上移开,程序将错过 MouseMove 事件,并且您的按钮将保留悬停属性。您需要像@pm_2 提到的link 一样对窗口进行子类化
    【解决方案2】:

    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 事件以取消突出显示图像的任何窗口部分

    【讨论】:

    • +1 用于捕捉 MouseMove 事件的问题。许多程序员没有意识到这一点。将鼠标快速移出该区域不会触发包含控件的 MoveMove,并且永远不会删除控件的悬停属性。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您始终可以对控件进行子类化。 Here's an article 描述了如何做到这一点。

      【讨论】:

        【解决方案5】:

        如果您使用 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-11
          • 2012-11-11
          • 2021-05-17
          • 1970-01-01
          • 1970-01-01
          • 2014-08-29
          • 2013-04-04
          相关资源
          最近更新 更多