मुझे मानक विंडोज़ ट्रीव्यू व्यवहार व्यवहार व्यवहार बहुत परेशान होने लगता है। उदाहरण के लिए, यदि आप एक्सप्लोरर का उपयोग कर रहे हैं और नोड पर क्लिक करें और गुण हिट करें, तो यह नोड को हाइलाइट करता है और आपके द्वारा क्लिक किए गए नोड के गुण गुण दिखाता है। लेकिन जब आप संवाद से वापस आते हैं, तो राइट-क्लिक करने से पहले हाइलाइट किया गया नोड पहले चयनित/हाइलाइट किया गया था। मुझे लगता है कि यह प्रयोज्य समस्याओं का कारण बनता है क्योंकि मैं हमेशा के लिए उलझन में हूं कि मैंने सही नोड पर काम किया है या नहीं।
तो हमारे कई जीयूआई में, हम चयनित पेड़ नोड को राइट-क्लिक पर बदलते हैं ताकि कोई भ्रम न हो। यह एक्सप्लोरर जैसे मानक iwndos ऐप के समान नहीं हो सकता है (और मैं मानक कारणों के लिए मानक विंडो ऐप्स के बाद हमारे जीयूआई व्यवहार को दृढ़ता से मॉडल करना चाहता हूं), मेरा मानना है कि यह एक अपवाद केस अधिक उपयोगी पेड़ों में परिणाम देता है।
private void tree_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
// only need to change selected note during right-click - otherwise tree does
// fine by itself
if (e.Button == MouseButtons.Right)
{
Point pt = new Point(e.X, e.Y);
tree.PointToClient(pt);
TreeNode Node = tree.GetNodeAt(pt);
if (Node != null)
{
if (Node.Bounds.Contains(pt))
{
tree.SelectedNode = Node;
ResetContextMenu();
contextMenuTree.Show(tree, pt);
}
}
}
}
स्रोत
2008-12-11 21:10:43
बहुत बहुत धन्यवाद, मेरे पास समाधान के लिए एक छोटा सा जोड़ा है: आप "_NodeMouseClick" ईवेंट का भी उपयोग कर सकते हैं जो आपको "TreeNodeMouseClickEventArgs e" देता है, इस मामले में आप केवल ई.ओडोड का उपयोग कर सकते हैं और नहीं गीले की जांच के साथ परेशान करने के लिए नोड शून्य है या नहीं। – SDM
मुझे माउसअप के बजाए माउसडाउन ईवेंट के साथ वांछित परिणाम मिला। – Javier