2011-01-24 29 views
18

Kullanıcılar sağ tıklattığında, seçilen düğümle ilgili olarak geçerli bağlamsal eylemler seçmelerine izin vererek ağaç görünümümde bir açılır menüyü göstermeye çalışıyorum.Seçmek için sağ tıklayın .Net TreeNode

Şu anda kullanıcı düğümü tıklatıp seçmek için sağ tuşa basmak zorundadır.

Düğüme sağ tıklamak o düğümü seçebilir - ve eğer öyleyse bunu yapmak için en iyi yöntem hangisidir?

cevap

39

Hem sol ve sağ tıklama bir tıklama olay yangın ve seçim değiştirmeye neden olur. Ancak, bazı durumlarda (henüz izlememekten rahatsız olmadım) seçim, ilk seçilen düğüme sağ tıklanan düğümden değişecektir. Işaret diğer posterleri biri olarak,

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

Biraz daha iyi: Amacıyla

Eğer zorla MouseDown olayı kullanarak seçilen düğüm değiştirebilir, sağ tıklama seçimi değiştirir emin olmak için

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

Kullanmaktır. Bu kodu sadece Formumun yapıcısına eklemek benim için hile yaptı. Teşekkür ederim. –

+0

NodeMouseClick yaklaşımında sahip olduğum bir sorun, NodeMouseClick olayının sonunda seçilen düğümü değiştirmesidir. Yani, benim amaçlarım için, seçilen düğümün herhangi bir içerik menüsü görüntülenmeden önce değişmesini istedim. Bunu yapmak için MouseDown yaklaşımını kullanmalıydım. – cigarman

+0

Evet Coleman. Doğrulama ekliyorum: eğer (e.Button == MouseButtons.Right) ... (daha az ücret) – harveyt

15

evet. İşte NodeMouseClick olay için işliyor:

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

sürükleyin içerik menüsü şeridi form üzerine daha sonra:

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