2011-01-24 112 views
18

我試圖在用戶右鍵單擊時在我的樹形視圖上顯示一個彈出式菜單 - 允許他們選擇上下文相關的操作來應用所選節點。右鍵點擊選擇.Net TreeNode

此刻用戶必須左鍵單擊節點,然後右鍵單擊才能選擇。

是否有可能在節點上點擊右鍵選擇該節點 - 如果是的話,最好的方法是什麼?

回答

39

左右兩側點擊觸發一個click事件,並導致選擇改變。但是,在某些情況下(我還沒有打擾追查),選擇將從右鍵單擊的節點更改爲最初選擇的節點。

爲了確保右鍵單擊更改選擇,你可以強制使用MouseDown事件來改變選擇的節點:

treeView.MouseDown += (sender, args) => 
    treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y); 

好一點,因爲其他海報指出之一,是使用NodeMouseClick事件:

treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node; 
+4

我同意。簡單地將這段代碼添加到我的窗體的構造函數中對我來說是個訣竅。謝謝。 – 2012-09-14 04:42:21

15

是的。這裏正在處理NodeMouseClick事件:

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
     treeView1.SelectedNode = e.Node; 
} 
3

將上下文菜單條上的形式,則:

private void treeView1_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     // Display context menu for eg: 
     ContextMenu1.Show(); 
    } 
}