2014-05-20 8 views
7

मेरे पास एक विनफॉर्म एप्लिकेशन है जहां मैं TreeView का उपयोग कर रहा हूं। इस एप्लिकेशन के कुछ उपयोगकर्ताओं को एक समस्या है कि उन्हें इसे विस्तारित करने के लिए नोड पर डबल क्लिक करना होगा। इसलिए मैं नोड्स का विस्तार करने के एक क्लिक के उपयोग करने के लिए इस कोड को कहा:ट्रीव्यू नोड व्यवहार पर क्लिक करें

Private Sub MyTreeView_NodeMouseClick(sender As System.Object, 
    e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles MyTreeView.NodeMouseClick 

    If e.Node.IsExpanded Then 
     e.Node.Collapse() 
    Else 
     e.Node.Expand() 
    End If 

End Sub 

यह काम करता है लेकिन मैं एक नोड पर क्लिक करने के बारे में अजीब व्यवहार देखा। मैंने देखा कि विभिन्न व्यवहार के साथ 2 स्थान हैं।

enter image description here

पहले स्थान पर आम तौर पर सिंगल क्लिक: सबसे पहले जगह के साथ +/- प्रतीक है और यह (चित्र में पहले चक्र) के बगल में डॉट्स है, दूसरे स्थान पर नोड (दूसरा वृत्त) के एक पाठ है नोड का विस्तार करने के लिए पर्याप्त है और नोड का विस्तार करने के लिए दूसरी जगह पर डबल क्लिक किया जाना चाहिए। फिर जब मैं अपने कोड का उपयोग करता हूं, तो दूसरी जगह पर एकल क्लिक नोड का विस्तार करने के लिए पर्याप्त होता है लेकिन जब मैं पहली जगह पर एकल क्लिक करता हूं, तो नोड का विस्तार होता है और ध्वस्त हो जाता है।

उपयोगकर्ता को नोड का विस्तार करने के लिए दूसरी जगह पर दो बार अधिक क्लिक क्यों करना चाहिए? नोड्स को दोनों स्थानों पर एकल क्लिक के साथ विस्तारित करने के लिए मैं क्या कर सकता हूं? आप लोगों को धन्यवाद!

उत्तर

6

प्लस/माइनस अभी भी नोड का हिस्सा माना जाता है - और जब उपयोगकर्ता इसे क्लिक करता है, तो आपका कोड विस्तार को टॉगल करता है लेकिन ढांचा जारी रहता है और वही करता है।

अपने कोड में जोड़े प्लस/शून्य पर कार्रवाई नहीं करने के लिए:

private static void TreeView_OnNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
{ 
    var hitTest = e.Node.TreeView.HitTest(e.Location); 
    if (hitTest.Location == TreeViewHitTestLocations.PlusMinus) 
     return; 

    if (e.Node.IsExpanded) 
     e.Node.Collapse(); 
    else 
     e.Node.Expand(); 
} 
+0

मेरे योजना एक्स, वाई निर्देशांक की जाँच करें और गणना करता है, तो निर्देशांक +/- करने के लिए या नोड पाठ से संबंधित था। मुझे हिटटेस्ट विधि और TreeViewHitTestLocations के बारे में पता नहीं था। धन्यवाद! – DanielH

संबंधित मुद्दे