你如何獲得所有點擊以通過活動?我注意到,如果你點擊得太快,它認爲你是雙擊並且不會將點擊發送到事件處理程序。有沒有辦法獲得所有的點擊?WinForms禁用雙擊並接受所有鼠標點擊?
回答
不知道爲什麼這個問題得到了獎勵,接受的答案應該已經非常接近解決方案。除了您應該使用MouseUp而不是MouseDown之外,您的用戶通常希望點擊操作在釋放按鈕時生效。其中提供退出「哎呀,並不意味着點擊它,移動鼠標,使其被忽略」選項。儘管如此,對於像PictureBox這樣的內置Winforms控件,這可以通過Control.SetStyle()方法進行配置。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。從工具箱的頂部掉落新的控制:但是
using System;
using System.Windows.Forms;
class MyPictureBox : PictureBox {
public MyPictureBox() {
this.SetStyle(ControlStyles.StandardDoubleClick, false);
}
}
,一定要提防這不會爲包裝已有的本地Windows控制.NET類的工作。像TextBox,ListBox,TreeView等。底層配置是WNDCLASSEX.style member,CS_DBLCLKS樣式標誌。設置該樣式標誌的代碼被烘焙到Windows中,並且無法更改。您需要進行不同類型的手術才能將雙擊恢復爲單擊。你可以這樣做,通過重寫的WndProc()方法,我舉一個例子爲文本框:
using System;
using System.Windows.Forms;
class MyTextBox : TextBox {
protected override void WndProc(ref Message m) {
// Change WM_LBUTTONDBLCLK to WM_LBUTTONCLICK
if (m.Msg == 0x203) m.Msg = 0x201;
base.WndProc(ref m);
}
}
,如果你想這樣做,其他控件只需更改類的名稱。 Commandeering Winforms使其以您想要的方式工作,從不需要太多代碼,只需Petzold :)
我想你想統計所有的點擊。 如果你想計數點擊,然後設置一個計數器變量,並增加它在點擊事件。 可能對你有幫助......
你自己做,然後點擊它非常快10倍。你會得到一個小於10的數字。我希望所有10次點擊。 – Will 2011-12-19 12:54:07
你想使用控件MouseDown事件而不是Click事件。每當鼠標在該控件上「按下」時,都會調用MouseDown。如果系統認爲它是雙擊,則點擊可能不會被調用。 DoubleClick活動將被提出。
- 1. 禁用鼠標多點擊並更改雙擊間隔
- 2. 禁用鼠標點擊
- 3. 禁用鼠標點擊按鈕單擊並啓用它
- 4. 焦點禁用鼠標點擊
- 5. 區分鼠標雙擊和鼠標點擊wpf
- 6. 檢測鼠標點擊時的移動,並檢測雙擊
- 7. 如何禁用鼠標左鍵點擊?
- 8. 禁用鼠標點擊當出格
- 9. 切換禁用鼠標點擊
- 10. 在Emacs中禁用鼠標點擊
- 11. AS3:單擊並停止點擊鼠標
- 12. 抓住/攔截所有鼠標點擊
- 13. 如何在點擊對象後禁用鼠標點擊?
- 14. 檢測到鼠標點擊並沒有在javascript中的鼠標點擊
- 15. SFML - pollEvent雙鼠標點擊運行
- 16. 禁用雙擊SELECT標籤
- 17. 接受鼠標點擊而不激活應用程序?
- 18. 通話雙擊鼠標單擊
- 19. 雙擊鼠標單擊事件RadioButtonList
- 20. 獲取鼠標雙擊pyHook
- 21. 鼠標雙擊DataGrid行
- 22. 鼠標雙擊火災只
- 23. Tkinter綁定鼠標雙擊
- 24. 在WInforms上禁用鼠標右鍵單擊
- 25. 攔截單擊或雙擊鼠標 - 僅執行雙擊代碼雙擊
- 26. SDL鼠標點擊
- 27. Powershell,鼠標點擊
- 28. SeaDragon鼠標點擊
- 29. 鼠標點擊JTable
- 30. 鼠標點擊java
改爲使用mousedown事件。 – 2011-12-19 12:48:47
@RussellTroywest我認爲[MouseClick](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseclick%28VS.80%29.aspx)事件會更好。因爲提高了秩序。 – 2011-12-19 12:52:35
@Michael:根據MSDN「按照用戶操作系統的鼠標設置確定發生的兩次單擊會產生MouseDoubleClick事件,而不是第二次MouseClick事件。」 - High看到的是什麼。 – 2011-12-19 12:55:29