2011-05-10 8 views
5

मान लीजिए मेरे पास एक कस्टम UserControl के साथ एक विंडो है, और UserControl के अंदर एक टेक्स्टबॉक्स है। जब मैं खिड़की को खींचता हूं, तो टेक्स्टबॉक्स कैसे पता लगा सकता है कि इसे स्थानांतरित किया जा रहा है?यह पता लगाने के लिए कि एक नियंत्रण स्थानांतरित किया जा रहा है?

मैंने अपनी रेंडरट्रांसफॉर्म संपत्ति के चारों ओर खोज करने की कोशिश की, तो उस परिवर्तन घटना को निकाल दिया जाता है जब "फ्रीजबल ऑब्जेक्ट या इसकी ऑब्जेक्ट्स में से कोई एक बदल जाता है"। कुछ भी नहीं निर्णायक ..

संपादित करें:

मेरे मामले में, मैं खिड़की नहीं दिख रहा है, सब मैं देख UserControl है और मैं किसी भी अधिक नहीं जा सकते हैं।

उत्तर

6

आपको विंडो ईवेंट की सदस्यता लेने की आवश्यकता होगी, क्योंकि आपका टेक्स्टबॉक्स वास्तव में नहीं चल रहा है (इसकी खिड़की से संबंधित समान स्थिति में इसकी सबसे अधिक संभावना है) ताकि आप Window.LocationChanged ईवेंट की सदस्यता ले सकें जब विंडो चली जाती है ।

लेकिन यदि आपके नियंत्रण में पूर्ण स्थिति नहीं है तो आपको Window.SizeChanged को पार्स करने की आवश्यकता होगी जो आपको बताएगा कि उपयोगकर्ता ने विंडो का आकार बदल दिया है, लेकिन यह एक प्रगतिशील अंतिम घटना है क्योंकि प्रगति की घटना के विपरीत यह एक अंतिम अंतिम घटना है।

+0

धन्यवाद। लेकिन यह मेरे मामले में काम नहीं करता है क्योंकि वास्तव में टेक्स्टबॉक्स उपयोगकर्ता नियंत्रण के अंदर है, जो एक चिपचिपा एमडीआई विंडो के अंदर है। मेरे कोड से मैं एमडीआई नहीं देख सकता, इसलिए मैं इसके आधार पर कुछ भी नहीं कर सकता। मैंने कहा कि मामले को सरल बनाने के लिए मेरे पास एक खिड़की थी। मुझे इस मामले से अलग-अलग दृष्टिकोण करने की ज़रूरत है। यह एक ऐसा फ्रेम नहीं होना चाहिए जो किसी घटना को आग लगाना और सभी को बताएं कि उन्हें चारों ओर ले जाया गया है। टेक्स्टबॉक्स को यह पता लगाना है कि इसका स्थान बदल गया है। – Mohamed

+0

यह उन अनुप्रयोगों के लिए भी काम नहीं करेगा जो ड्रैग और ड्रॉप कंट्रोल का उपयोग करते हैं ... जो मेरी समस्या है। –

2

UserControl की लेआउट अद्यतन घटना की सदस्यता लेने का प्रयास करें।

+0

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

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

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