2010-04-19 11 views
13

ड्रैग & ड्रैगड्रॉप.डॉड्रैगड्रॉप (...) द्वारा ड्रॉप ऑपरेशन शुरू करने के बाद माउसमोव ईवेंट को निकाल दिया जाता है। मैंनेDoDragDrop MouseMove ईवेंट अक्षम करता है

AddHandler(Window.MouseMoveEvent, new MouseEventHandler(myControl_MouseMove), true); 

जहां अंतिम पैरामीटर का अर्थ है कि मैं भी संभाले गए ईवेंट के लिए चुनता हूं। कोई मौका नहीं, ऐसा लगता है जैसे MouseMove इवेंट कभी नहीं निकाल दिया गया है! खींचें & ड्रॉप का उपयोग करते समय अभी भी MouseMove ईवेंट प्राप्त करने का कोई तरीका? मैं & खींचना चाहता हूं, इस नियंत्रण को खींचते समय, नियंत्रण को छोड़ दें, यह माउस पॉइंटर का पालन करेगा। इस मामले में ऐसा करने का कोई विचार है?

+0

यह संदेश धागा यह भी पुष्टि करता है कि आप क्या देख रहे हैं: http://social.msdn.microsoft.com/Forums/en/wpf/thread/1053aaa4-d8b6-48d7-8d53-2af98e60d542 –

उत्तर

9

आपको DragOver event को संभालने की आवश्यकता है।

संपादित: नियंत्रण है कि आप पर DoDragDrop कहा जाता है पर GiveFeedback event से निपटने का प्रयास करें; जो आप खोज रहे हैं वह कर सकता है।

+0

आपके उत्तर के लिए धन्यवाद, तो मुझे अपनी खिड़की में सभी नियंत्रणों में ड्रैगओवर जोड़ना होगा और उन्हें एक ही इवेंट हैंडलर को इंगित करना होगा जो मेरा नियंत्रण लेता है? –

+0

मुझे ऐसा लगता है। (मैंने कभी यह नहीं किया है) – SLaks

+0

मैंने अंततः कर्सर की स्थिति प्राप्त करने के लिए WinApi का उपयोग किया, लेकिन कभी-कभी ड्रैगओवर का उपयोग भी किया जाता है। Http://blogs.msdn.com/b/jaimer/archive/2007/07/12/drag-drop-in-wpf-explained-end-to-end.aspx देखें। –

0

DragDrop.DoDragDrop निर्माण क्या है? DoDragDrop को वास्तव में DragDrop में नहीं, MouseDown/MouseMove विधि में बुलाया जाना है। यह प्रक्रिया को संभालने शुरू करना है, ड्रॉप के लिए प्रतिक्रिया न करें (ड्रॉप के वांछित प्रभाव जिसे आप सीधे ड्रैगड्रॉप में लागू करते हैं)। MouseMove पहले से खींचते समय कभी भी आग नहीं लगाता है, शायद यही कारण है कि यह आपके साथ भी आग नहीं लगाता है, क्योंकि आप प्रक्रिया को सेट करते हैं। मुझे लगता है कि आप इस गलत तरीके से संभालते हैं, यहां उदाहरणों में से एक उदाहरण है http://msdn.microsoft.com/en-us/library/aa984430%28v=vs.71%29.aspx

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