2011-01-24 45 views
18

Tôi đang cố gắng hiển thị menu bật lên trên treeview của mình khi người dùng nhấp chuột phải - cho phép họ chọn các hành động nhạy cảm theo ngữ cảnh để áp dụng với nút đã chọn.Nhấp chuột phải vào chọn .Net TreeNode

Hiện tại người dùng phải nhấp vào nút nhấp chuột và sau đó nhấp chuột phải để chọn.

Có thể thực hiện nhấp chuột phải vào nút chọn nút đó không và nếu đó là phương pháp tốt nhất để thực hiện điều này.

Trả lời

39

Cả hai nhấp chuột trái và phải sa thải một sự kiện click và gây ra sự lựa chọn để thay đổi. Tuy nhiên, trong một số trường hợp (mà tôi vẫn chưa bực bội để theo dõi) lựa chọn sẽ thay đổi từ nút đã được nhấp chuột phải vào nút đã chọn ban đầu.

Để chắc chắn rằng kích chuột phải thay đổi việc lựa chọn, bạn buộc phải có thể thay đổi các nút lựa chọn bằng cách sử dụng sự kiện MouseDown:

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

Một chút tốt hơn, là một trong những áp phích khác chỉ ra, là sử dụng sự kiện NodeMouseClick:

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

Tôi đồng ý. Đơn giản chỉ cần thêm mã này vào constructor của Form của tôi đã làm thủ thuật cho tôi. Cảm ơn bạn. –

+0

Một vấn đề tôi có với phương pháp NodeMouseClick là nó thay đổi nút đã chọn ở cuối sự kiện NodeMouseClick. Vì vậy, với mục đích của mình, tôi muốn nút được chọn thay đổi trước khi bất kỳ menu ngữ cảnh nào được hiển thị. Để làm được điều đó, tôi phải sử dụng phương pháp MouseDown. – cigarman

+0

Có Coleman. Tôi thêm xác nhận: if (e.Button == MouseButtons.Right) ... (phí ít hơn) – harveyt

15

có. Dưới đây là chế biến cho NodeMouseClick sự kiện:

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

Kéo một dải menu ngữ cảnh vào biểu mẫu sau đó:

private void treeView1_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     // Display context menu for eg: 
     ContextMenu1.Show(); 
    } 
} 
Các vấn đề liên quan