簡體   English   中英

TreeView(帶有復選框)不能正確處理點擊?

[英]TreeView (with checkboxes) not processing clicks correctly?

我有一個TreeList,基本上像一個Photoshop圖層調色板。 這是帶有復選框的層次結構列表,用於切換文檔各個層的可見性。 這是通過BeforeChecked事件完成的,該事件在.Checked值切換之前立即引發。

它工作正常,除非您雙擊它,否則一切似乎都變得一團糟。

如果您雙擊一個復選框,它將兩次切換選中的值(這是預期的行為),但不會兩次切換圖層的可見性,因為它不會兩次提高BeforeChecked。

我認為可以通過將其放入MouseDoubleClick事件來解決此問題:

TreeViewHitTestInfo hit = treeLayerPalette.HitTest(e.X, e.Y);
hit.Node.Checked = !(hit.Node.Checked);

這適用於除第一次雙擊外的所有雙擊。 因此,它一開始只引發一次BeforeChecked事件(而不是MouseDoubleClick),使復選框與圖層的可見性不同步,然后所有隨后的雙擊都會引發BeforeChecked和MouseDoubleClick事件(這反過來會引發BeforeChecked事件),保持這種不正確的關系。

另外,在某一時刻,我在DoubleClick事件中放入了一個MessageBox.Show()。 足夠尷尬的是,它實際上並沒有在雙擊中顯示,而是在第三次單擊中顯示,無論在實際的雙擊和第三次單擊之間經過了多長時間。 雙擊20秒后進行的第三次單擊將引發MouseDoubleClick事件,但實際的雙擊不會。

實際發生了什么,我該如何解決?

這是啟用復選框的樹視圖的問題,但是有一些可接受的解決方法。首先:MS知道該問題,但拒絕解決此問題...: http : //connect.microsoft.com/VisualStudio/feedback/details/ 775922 / treeview-double-click-bug#details <-錯誤報告....

因此,除了解決該方法外,別無他法。.最簡單的方法是將Treeview子類化並強行禁用復選框上的dblclick ...答案(在SOF上): c#treeview只在復選框上忽略雙擊

希望這可以幫助....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM