मेरे पास एक सी # .NET 2.0 WinForms ऐप है। मेरे ऐप में एक नियंत्रण है जो दो बाल नियंत्रणों के लिए एक कंटेनर है: एक लेबल, और कुछ प्रकार के संपादन नियंत्रण। आप इस, जहां बाहरी बॉक्स जनक नियंत्रण है के रूप में विचार कर सकते हैं:अभिभावक नियंत्रण माउस बाल नियंत्रण के साथ प्रविष्टियां/छोड़ें
+---------------------------------+ | [Label Control] [Edit Control] | +---------------------------------+
मैं जब माउस प्रवेश करती है या माता पिता के नियंत्रण छोड़ देता है कुछ करने के लिए कोशिश कर रहा हूँ, लेकिन मुझे परवाह नहीं है अगर माउस चालें अपने बच्चों में से एक में। मैं एक एकल ध्वज का प्रतिनिधित्व करना चाहता हूं "माउस माता-पिता या बच्चों के अंदर कहीं है" और "माउस पैरेंट नियंत्रण सीमाओं के बाहर स्थानांतरित हो गया है"।
मैंने माता-पिता और माउसलाइव पर माउसइंटर और माउसलेव को संभालने का प्रयास किया है, लेकिन इसका मतलब है कि कार्रवाई कई बार समाप्त होती है और माउस नियंत्रण के दौरान कई बार समाप्त होती है। दूसरे शब्दों में, मैं इस मिल:
Parent.OnMouseEnter (start doing something) Parent.OnMouseLeave (stop) Child.OnMouseEnter (start doing something) Child.OnMouseLeave (stop) Parent.OnMouseEnter (start doing something) Parent.OnMouseLeave (stop)
मध्यवर्ती OnMouseLeave घटनाओं जो कुछ भी रूप में मैं कर रहा हूँ शुरू कर दिया जाता है और फिर बंद कर दिया कुछ अनचाहे प्रभाव होता है। मैं इससे बचना चाहता हूं।
मैं माउस को कैप्चर नहीं करना चाहता क्योंकि माता-पिता को माउस खत्म हो जाता है, क्योंकि बच्चे के नियंत्रण को उनके माउस ईवेंट की आवश्यकता होती है, और मैं मेनू और अन्य शॉर्टकट कुंजियों को काम करना चाहता हूं।
क्या .NET ढांचे के अंदर ऐसा करने का कोई तरीका है? या मुझे विंडोज माउस हुक का उपयोग करने की ज़रूरत है?
अगर मैं वर्तमान माता पिता को छोड़, मैं नहीं जानता कि अग्रिम में मैं एक बच्चे के नियंत्रण में जा रहा हूं या वास्तव में माता-पिता को छोड़ रहा हूं। और यदि मैंने सुझाव दिया है, तो माता-पिता OnMouseLeave को "हे, यह मैं हूं, इसलिए प्रसंस्करण जारी रखें" कहना होगा, इसलिए नियंत्रण के बाहर आगे बढ़ना और किसी अन्य नियंत्रण में नहीं, प्रसंस्करण को रोक नहीं पाएगा। –
यह एक अच्छा मुद्दा है, हालांकि यदि आपका नियंत्रण रोकथाम संरचना बहुत लचीली नहीं है, यानी एन-स्तरीय रोकथाम और/या आप माता-पिता के प्रकार को ध्यान में रखते हैं तो आप अभी भी इस विधि का उपयोग कर सकते हैं। उदाहरण के लिए, आपको एक एंटर इवेंट मिलता है, फिर आप उस नियंत्रण को लेते हैं जब तक आप समूहबॉक्स या पैनल (जो भी आपके बटन वाले होते हैं) देखते हैं और उस मान के संदर्भ पर मूल्यांकन करते हैं, तब तक आप नियंत्रण पेड़ पर जाते हैं। जब यह बदलता है। –