2009-06-02 12 views
62

System.Windows.UIElement पर CaptureMouse() और एक जोड़ा ReleaseMouseCapture() विधि है। इस WPF DragDrop नमूने में वे माउसडाउन पर कैप्चरमाउस को कॉल करते हैं और इसे माउसअप पर छोड़ देते हैं। documentation in MSDN उतना बेकार है जितना यह आता है - "कैप्चरमाउस -> माउस को कैप्चर करता है।"डब्ल्यूपीएफ में "माउस कैप्चर" करने का क्या अर्थ है?

कोशिश करने से पहले मेरे सिर में मैंने माना कि यह किसी भी तरह से UIElement सीमाओं के अंदर माउस को बंद कर देता है, लेकिन यह स्पष्ट रूप से मामला नहीं है जब मैं इसे आज़माता हूं। प्रयोग करने से, ऐसा लगता है कि जब माउस UIElement के बाहर होता है, तो घटनाओं के जवाब देने के साथ कुछ करना पड़ता है, लेकिन cargo cult programmer नहीं बनना चाहता हूं, मैं इसका उपयोग नहीं करना चाहता क्योंकि उदाहरण करता है, मैं एक आधिकारिक चाहता हूं इसका क्या अर्थ है इसका विवरण।

उत्तर

70
Capture and Uncapture the Mouse से MSDN पर

:

एक वस्तु माउस कब्जा करते समय, सभी माउस से संबंधित घटनाओं इलाज कर रहे हैं के रूप में अगर माउस को पकड़ने के साथ वस्तु घटना प्रदर्शन करते हैं, यहां तक ​​कि अगर माउस सूचक किसी अन्य वस्तु से अधिक है।

माउस को कैप्चर करना खींचने के लिए उपयोगी है क्योंकि केवल कैप्चरिंग नियंत्रण जारी होने तक माउस ईवेंट प्राप्त करता है। एकाधिक नियंत्रण पर फैलाने के बजाए, सभी ड्रैगिंग कोड एक नियंत्रण में मौजूद हो सकते हैं।

+12

माउस कैप्चर करने पर सबसे महत्वपूर्ण ** केवल कैप्चरिंग कंट्रोल ** माउस ईवेंट प्राप्त करता है। –

+0

एमएसडीएन – user1034912

3

Silverlight 2 documentation यह एक अधिक वर्बोज़ विवरण नहीं है के लिए, मैं क्यों यह भी 3.5 प्रलेखन पेज का एक हिस्सा नहीं है पता नहीं है:

जब एक वस्तु माउस पर कब्जा कर लिया गया है, उस वस्तु प्राप्त करता है माउस इनपुट चाहे माउस पॉइंटर अपने बाध्य क्षेत्र में है या नहीं। माउस आमतौर पर सिम्युलेटेड ड्रैग ऑपरेशंस के दौरान ही कब्जा कर लिया जाता है।
...

यह WPF के साथ एक ही काम करता है, और इसलिए कारण यह DragDrop साथ प्रयोग किया जाता है, कि कैसे यह नियंत्रित करने के लिए वापस रिपोर्ट करने जानता से जब माउस हो सकता है घसीटा जा रहा है उस नियंत्रण के बाहर। यदि आप MyCanvas.Capture() और कैप्चर (नल) (जो इसे साफ़ करता है) पर टिप्पणी करते हैं तो आप अब नहीं छोड़ सकते हैं।

+0

में इस तरह की एक बहुत ही महत्वपूर्ण जानकारी का उल्लेख नहीं किया जा रहा है एसएल प्रलेखन से आपने उद्धृत किया है: "माउस आमतौर पर सिम्युलेटेड ड्रैग ऑपरेशंस के दौरान ही कब्जा कर लिया जाता है।" - "अनुरूपित ड्रैग ऑपरेशन" क्या है और यह वास्तविक से अलग कैसे होता है? धन्यवाद। – Sabuncu

11

जब उसने माउस पर कब्जा कर लिया है, तो माउस पॉइंटर अब इसके बाउंडिंग क्षेत्र में नहीं होने पर भी माउस ईवेंट प्राप्त करेगा।

आमतौर पर, इसके लिए प्रयोग किया जाता है:

  • खींचें और (माउस बटन छोड़ने को संभालने के लिए जब आप बटन दबाकर माउस रख दिया और माउस को स्थानांतरित करने से पहले आप बटन छोड़ें)
ड्रॉप
  • बटन
  • संबंधित मुद्दे