當用戶單擊或雙擊VB6 ListBox控件中的項目時,需要運行不同的代碼。當我點擊控件時,Click事件處理程序執行。但是,我發現當我雙擊控件時,Click和DblClick事件處理程序都會執行。VB6 ListBox Click and DblClick
任何人都有一個很好的解決方案,只要DblClick事件處理程序代碼在沒有首先執行Click代碼的情況下運行?
在此先感謝您的任何建議。
當用戶單擊或雙擊VB6 ListBox控件中的項目時,需要運行不同的代碼。當我點擊控件時,Click事件處理程序執行。但是,我發現當我雙擊控件時,Click和DblClick事件處理程序都會執行。VB6 ListBox Click and DblClick
任何人都有一個很好的解決方案,只要DblClick事件處理程序代碼在沒有首先執行Click代碼的情況下運行?
在此先感謝您的任何建議。
輕微的黑客,但你可以使用Timer控件和一個布爾變量:
我建議計時器的時間間隔設置到W indows雙擊時間設置,再加上一點(應該有一個Windows API調用會給你這個值)。
Visual Basic 6中的列表控件的行爲如下。
當您點擊某個項目時,會觸發點擊事件。
當你點擊SAME項目時,click事件仍然被觸發。
當您雙擊該項目時,會觸發點擊事件和雙擊事件。
注#2。你需要做的是在你使用的表單中有一個當前項目。每次檢查點擊事件時,您都會首先查看當前項目是否與您點擊的項目相同。如果它不是通常正在處理單擊事件的相同項目。
如果你雙擊一個新項目,那麼用戶在同一時間做兩件事情。選擇一個新項目並執行雙擊項目。在這種情況下,首先點擊點擊然後雙擊。
這個順序與控制符合你想要的順序沒有什麼不同。這與您點擊新項目等待X秒鐘然後雙擊同一項目相同。
如果您的點擊事件涉及將任務交給ActiveX EXE,並立即終止或設置稍後由後臺定時器處理的數據。然後,您需要有一個信號量或一個標誌來指示click事件產生的進程何時完成。直到信號被清除後,雙擊事件纔會被處理。
如果您有其他詳細信息,我的答案可能更具體。以下是您可以運行以查看操作中的列表框的一些代碼。創建一個表單並將三個項目添加到列表中。然後添加下面的代碼。
Private Sub List1_Click()
Print "Clicked - " & Me.List1.List(Me.List1.ListIndex)
End Sub
Private Sub List1_DblClick()
Print "Double Clicked - " & Me.List1.List(Me.List1.ListIndex)
End Sub
執行以下步驟
您將看到發生的各種操作組合。
擊敗我吧!我過去使用過相同的技術。 – 2009-01-15 15:59:37