2011-01-24 5 views
18

पर राइट क्लिक करें, जब मैं सही क्लिक करता हूं तो मैं अपने पेड़ दृश्य पर पॉपअप मेनू दिखाने की कोशिश कर रहा हूं - उन्हें चयनित नोड के खिलाफ आवेदन करने के लिए संदर्भ संवेदनशील क्रियाएं चुनने की अनुमति देता है।.Net TreeNode

इस समय उपयोगकर्ता को नोड पर क्लिक करना होगा और फिर चयन करने के लिए राइट क्लिक करना होगा।

क्या नोड पर राइट क्लिक करना संभव है कि नोड का चयन करें - और यदि ऐसा है तो ऐसा करने का सबसे अच्छा तरीका क्या है।

उत्तर

39

दोनों छोड़ दिया और सही क्लिक के लिए क्लिक ईवेंट को सक्रिय और चयन को बदलने के कारण। हालांकि, कुछ परिस्थितियों में (कि मैंने अभी तक पता लगाने के लिए परेशान नहीं किया है) चयन नोड से बदल जाएगा जो मूल रूप से चयनित नोड पर दायाँ क्लिक किया गया था।

आदेश में यह सुनिश्चित करें कि राइट क्लिक चयन परिवर्तन करने के लिए आप जबरन MouseDown घटना का उपयोग करके चयनित नोड बदल सकते हैं,:,,

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

थोड़ा बेहतर अन्य पोस्टर ने बताया के रूप में

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

मैं मानता हूँ: NodeMouseClick घटना का प्रयोग है। बस मेरे फॉर्म के कन्स्ट्रक्टर को यह कोड जोड़कर मेरे लिए चाल थी। धन्यवाद। –

+0

नोडमोउसक्लिक दृष्टिकोण के साथ मेरे पास एक मुद्दा यह है कि यह नोडमैउसक्लिक ईवेंट के अंत में चयनित नोड को बदलता है। तो, मेरे उद्देश्यों के लिए, मैं चाहता था कि चयनित नोड किसी भी संदर्भ मेनू प्रदर्शित होने से पहले बदल जाए। ऐसा करने के लिए, मुझे माउसडाउन दृष्टिकोण का उपयोग करना पड़ा। – cigarman

+0

हां कोलमन। मैं सत्यापन जोड़ता हूं: यदि (ई। बटन == माउसबट्टन.राइट) ... (कम शुल्क) – harveyt

15

हाँ। तो प्रपत्र पर

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

खींचें एक संदर्भ मेनू पट्टी:: यहाँ NodeMouseClick घटना के लिए संसाधित कर रहा है

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