2009-01-23 67 views
14

我有一個常規的.NET Windows Forms treeview控件。該節點的設置是這樣的:在.NET/C中的TreeView雙擊行爲#

集團

---孩子

---孩子

如果我雙擊倒塌組節點,它擴展(如你所期望)並且NodeMouseDoubleClick事件被觸發,如果所選節點不是組節點,我的代碼會執行某些操作。

當組位於樹視圖的底部附近時會出現問題,因此當我雙擊組節點時,需要樹視圖垂直展開以使子節點適合視圖。在這種情況下,如果我雙擊組節點,在它展開並調整樹視圖的時候,我的鼠標指針位於子節點上(它必須將所有內容全部向上),並且這導致NodeMouseDoubleClick將子節點被選中,這會導致非常奇怪的行爲。

我該如何解決這個問題?我應該不使用NodeMouseDoubleClick還是..?

我看到它也在反饋報告中解釋過Problem with TreeView DoubleClick event after expanding/collapsing caused change of scroll

回答

15

NodeDoubleClick很好,但不是使用e.Node,而是使用this.treeView1.SelectedNode

7

雙擊一個TreeNode是一個鼠標手勢,TreeView已經「使用」了這個手勢來合攏/展開節點微軟並沒有像蘋果那樣推送UI標準,在某些層面上令人失望的是微軟已經公開了NodeDoubleClick,因爲它們鼓勵您使用自己的自定義行爲修改TreeView。這可能會誤導最終用戶,他們期望通用控制的共同行爲。

Designing the User Interface通過本·謝奈德曼,第一界面設計的八大黃金法則的:

  1. 爭取一致性。

在類似的情況下,一致的動作序列應該是 ; 在提示,菜單和幫助屏幕中應使用相同的術語 ; 和始終使用的一致命令應該是 。

長話短說,也許你不應該使用NodeMouseDoubleClick。

+2

如果客戶端需要它,我會實現它... – thumbmunkeys 2011-05-17 09:29:20