पर चलते समय माउसलेव घटना आग लगती है मैं समस्या को हल करने में असमर्थता के कारण इस प्रश्न को दोबारा पोस्ट कर रहा हूं (मूल here)।नियंत्रण के स्क्रॉलबार
ट्री व्यू, लिस्टबॉक्स में, या ऐसा लगता है कि मेरी Google खोज स्क्रॉलबार के साथ कुछ भी है, स्क्रॉलबार को नियंत्रण का हिस्सा नहीं माना जाता है।
मेरे पास एक वृक्ष दृश्य है कि मैं एक कस्टम नियंत्रण में डाल रहा हूं, और यह डॉक फिल है। तो वहां यह कस्टम ट्री व्यू के रूप में कार्य करता है जिसमें एक ही स्थान पर इसे प्रबंधित करने के लिए हमारे सभी तर्क हैं।
हमारे कार्यक्रम के कुछ हिस्सों में हम इसे माउसइंटर घटना के आधार पर स्लाइड करते हैं, और इसे माउसलेव ईवेंट पर वापस स्लाइड करते हैं, हालांकि हम वर्तमान में इसके लिए एक तृतीय पक्ष लाइब्रेरी के ट्री व्यू का उपयोग कर रहे हैं, जिसे मुझे प्रतिस्थापित करने के लिए कार्य किया गया है।
तो मैंने सबकुछ विंडोज ट्री व्यू में ले जाया है, लेकिन माउसलेव को विश्वसनीय रूप से कैप्चर करने का कोई तरीका नहीं मिल सकता है- अगर यह पूरे TreeView को छोड़ देता है, तो स्क्रॉलबार शामिल है।
मैंने कई पिक्सल वाले पैनल में इसे लपेटने और पैनल के माउसलेव को कैप्चर करने का एक हैकिश समाधान देखा है, लेकिन मुझे शायद ही विश्वास है कि माइक्रोसॉफ्ट ने हमें इस स्थिति में ऐसा करने का इरादा किया था।
कम में:
स्क्रॉलपट्टी नियंत्रण के लिए mouseenter या mouseleave आग नहीं है, और है कि नियंत्रण उपयोगकर्ता स्क्रॉलपट्टी उपयोग नहीं कर सकते, क्योंकि व्यर्थ बाहर फिसलने के लिए mouseenter/mouseleave का उपयोग कर बनाता है।
इस स्थिति को संभालने का पसंदीदा तरीका क्या है?
पिछले प्रश्न में मुझे Spy ++ का उपयोग करने और स्क्रॉलबार के लिए MouseEnter/MouseLeave को संभालने के लिए WndProc() से अटैच करने का प्रयास दिया गया था।
हालांकि यह काम नहीं करता था क्योंकि स्पाइ ++ दिखाया गया था कि WndProc() में फॉर्म स्तर या नियंत्रण स्तर पर फायरिंग नहीं किया गया था। ऐसा लगता है जैसे .NET बस स्क्रॉलबार नहीं देख सकता है।
WndProc() का उपयोग करना इस तरह के एक सरल अनुरोध के लिए अवास्तविक लगता है, क्या ऐसा करने का कोई और तरीका है, या यदि WndProc() एकमात्र तरीका है, तो क्या कोई वास्तव में इसे प्राप्त करने में सक्षम है और मुझे दिखाता है कि कैसे?
यह पूरी तरह से काम करता है, धन्यवाद! –