2009-01-23 7 views
14

में डबल-क्लिक व्यवहार। मेरे पास नियमित .NET Windows Forms वृक्षदृश्य नियंत्रण है। नोड्स इस तरह सेटअप कर रहे हैं:TreeView .NET/C#

समूह

--- बच्चे

--- बच्चे

मैं एक ढह समूह नोड डबल क्लिक करें, तो वह फैलता (आपकी अपेक्षानुसार) और NodeMouseDoubleClick ईवेंट को निकाल दिया गया है, जहां मेरा कोड कुछ करता है यदि चयनित नोड समूह नोड नहीं है।

समस्या तब उत्पन्न होती है जब समूह वृक्षदृश्य के नीचे स्थित होता है, ताकि जब मैं समूह नोड को डबल-क्लिक करता हूं तो उसे बच्चे नोड्स को देखने के लिए लंबवत विस्तार करने के लिए वृक्षदृश्य की आवश्यकता होगी। ऐसे मामलों में, यदि मैं ग्रुप नोड को डबल-क्लिक करता हूं, जब तक यह वृक्षदृश्य को फैलाता है और समायोजित करता है, तो मेरा माउस कर्सर एक बच्चे नोड (इसे सबकुछ ऊपर धक्का देना पड़ता है) पर होता है, और इससे नोडमाउस डबलब्लिक को बच्चे नोड को सोचने का कारण बनता है चुना जाता है, जो बहुत अजीब व्यवहार का कारण बनता है।

मैं इसके आसपास कैसे हो सकता हूं? क्या मुझे NodeMouseDoubleClick या .. का उपयोग नहीं करना चाहिए?

मुझे लगता है कि यह प्रतिक्रिया रिपोर्ट Problem with TreeView DoubleClick event after expanding/collapsing caused change of scroll में भी समझाया गया था।

उत्तर

15

NodeDoubleClick ठीक है, लेकिन e.Node का उपयोग करने के बजाय, this.treeView1.SelectedNode का उपयोग करें।

7

ट्रीनोड पर डबल-क्लिक करना एक माउस इशारा है जो ट्री व्यू द्वारा पहले से ही "प्रयुक्त" है, नोड्स को पतन/विस्तारित करने के लिए माइक्रोसॉफ्ट यूआई मानकों को उतना ही नहीं दबाता जितना ऐप्पल करता है, और कुछ स्तर पर यह निराशाजनक है कि माइक्रोसॉफ्ट ने NodeDoubleClick का खुलासा किया है, क्योंकि वे आपको अपने स्वयं के कस्टम व्यवहार के साथ TreeView में संशोधन करने के लिए प्रोत्साहित कर रहे हैं। यह उपयोगकर्ताओं को समाप्त करने के लिए भ्रामक हो सकता है, जो आम नियंत्रण से आम व्यवहार की अपेक्षा करते हैं।

Designing the User Interface से

बेन शनाइडरमन, आठ इंटरफेस डिजाइन के स्वर्ण नियम के पहले से:

  1. स्थिरता के लिए प्रयास करते।

क्रियाओं के लगातार अनुक्रम समान परिस्थितियों में आवश्यक होना चाहिए; संकेतों, मेनू और सहायता स्क्रीन में समान शब्दावली का उपयोग किया जाना चाहिए; और लगातार आदेश पर नियोजित होना चाहिए।

लंबी कहानी छोटी, शायद आपको NodeMouseDoubleClick का उपयोग नहीं करना चाहिए।

+2

यदि ग्राहक इसे चाहता है, तो मैं इसे लागू कर दूंगा ... – thumbmunkeys

+2

यह समझ में आता है कि नोड में कोई बच्चा नहीं है, नोड का प्रतिनिधित्व करने वाली सामग्री के साथ कुछ करने के लिए। यह लगातार, या कम से कम तार्किक लगता है। मैं ऐसा कर रहा हूं जब बच्चों के साथ नोड्स निर्देशिका का प्रतिनिधित्व करते हैं और सामग्री के बिना नोड्स फाइलों का प्रतिनिधित्व करते हैं। फ़ाइल नोड पर डबल क्लिक करने से फ़ाइल खुलती है। – jeromeyers

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

  • कोई संबंधित समस्या नहीं^_^