2010-08-06 19 views
1

我有一個圖像,我已經在MouseMove中編寫了代碼來照亮它。這正在做我想要的是,當鼠標離開圖像的亮點消失,但我似乎無法找到任何事件,將做到這一點。我正在使用visual basic 6.0。我已經嘗試了mouseup和down事件,但他們不符合我的要求。熱門虛擬形象vb6中的鼠標事件

感謝

回答

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 
+0

似乎是唯一的選擇,我現在將圖像陣列所以有點重碼 – PUG 2010-08-06 11:49:35

+1

此方法不工作的可靠性。如果您快速移動鼠標離開包含圖像的按鈕(Image1),程序將錯過MouseMove事件,並且您的按鈕將留下懸浮屬性。您需要在窗口中進行子分類,如同樣在@ pm_2 – Jeff 2016-11-05 14:29:05

1

您還可以將想要模擬mouseleave事件的圖像放在更大的圖片中。這樣,當您離開內部照片(較小)時,您將點擊外部照片的鼠標移動事件。此外,如果使用框架或標籤而不是其他圖片,則此方法可行。

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

+1中提及的[link](http://www.codeproject.com/Articles/6844/Adding-MouseLeave-MouseHover-events-to-VB-Control) MouseMove事件的問題。許多程序員沒有意識到這一點。將鼠標快速移出該區域將不會觸發包含控件的MoveMove,並且該控件的懸停屬性將永遠不會被刪除。 – Jeff 2016-11-05 14:16:28

0

如果您使用mouseMove事件,需要關心的一件事是在您處於IN控件中時引發一個標記,並在OUT時突出顯示另一個標記以避免在每個鼠標上重複相同的操作XY變化

私人小組Form_MouseMove(按鈕作爲整數,移作爲整數,X爲單,Y爲單)

'如果imageIsHighlighted =真,那麼

' Unhighlight圖像」

'imageIsHighlighted =假

' END IF

結束子

私人小組Image1_MouseMove(按鈕作爲整數,移位作爲整數,X爲單,Y爲單)

「如果imageIsHighlighted =假,則

'突出顯示圖像'

'imageIsHighlighted =真

「END IF

結束子