क्या यह संभव है कि WPF में खींचें और छोड़ें घटनाओं विश्वसनीय फायरिंग नहीं कर रहे हैं?

वोट
-1

मुझे आश्चर्य है अगर डी एंड डी की घटनाओं हमेशा नहीं (DragLeave / DragEnter) फायरिंग।

मैं अपने WPF GUI में एक डी एंड डी सुविधा को लागू। कुछ तत्व खींचते समय चारों ओर मैं dragleave 'एक जीयूआई तत्व। आम तौर पर यह एक उचित 'DragLeave' ईवेंट सक्रिय, लेकिन हमेशा नहीं। मुझे डर है, कि कुछ गति कारणों के लिए कभी कभी इन घटनाओं विश्वसनीय निकाल नहीं मिलता है। अगर ऐसी बात है, मैं कैसे इन मुद्दा दूर कर सकते हैं?

09/10/2019 को 13:00
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

लघु संस्करण: मैं इसे अपने आप जाँच करने के लिए कुछ नमूना अनुप्रयोग लिखा है - और हाँ - DragLeave घटना विश्वसनीय निकाल दिया नहीं है।

दीर्घ संस्करण:

मैंने क्या किया:

मैं एक रखा Labelएक के अंदर एक खींचने योग्य वस्तु के रूप में StackPanel। तब मैं के लिए कोड लागू किया MouseMoveऔर DragLeaveघटनाओं। एक अतिरिक्त TextBlock- को जोड़ा गया StackPanelऔर साथ ही - घटना आउटपुट के रूप में कार्य किया। यदि DragLeaveहैंडलर कहा जाता हो जाता है, मैं बदल Text Propertyके TextBlockलिए ' DragLeave हुई '। बाद में मैं इसे खींच परीक्षण किया Labelकी ओर StackPanel

क्या मैं मान्यता प्राप्त:

अगर मैं था तेजी से पर्याप्त या माउस बटन दबाया के पास की सीमा Label, DragLeaveघटना था नहीं निकाल दिया। अगर मैं यह किया धीमी गति से , सब कुछ काम किया ठीक अपेक्षा के अनुरूप।

मैं क्या निष्कर्ष निकाल:

मुझे लगता है कि, माउस छोड़ देता है, तो Labelइससे पहले कि ' DoDragDrop' धागा शुरू किया जाता है, गतिविधि सक्रिय नहीं है, के बाद से माउस के बाहर पहले से ही है Label। तो वहाँ डी और विकास तथा पहली घटना की फायरिंग शुरू करने के बीच एक छोटी सी गड़बड़ है।

एक में एक ही व्यवहार देख सकते हैं DragOver/MouseMoveहैंडलर। तेजी से आप माउस ले जाते हैं, कम अंक (e.GetPosition (...)) आप ईवेंट हैंडलर में कब्जा कर सकते हैं।

समस्या यह है, के लिए है कि DragLeaveकि लापता घटना, महत्वपूर्ण हो सकता है, क्योंकि यह एक बार ही निकाल दिया जाता है। हालांकि, DragOverघटना एक खींचने के दौरान बहुत बार निकाल दिया जाता है और एक लापता घटना अगले द्वारा संतुलित किया जा सकता DragOverसीधे बाद में ईवेंट।

10/10/2019 को 14:51
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more