एक टिप्पणी के लिए बहुत लंबा, लिंक, और कोड भी शामिल है ... लेकिन यह एक टिप्पणी है ...
बहुत से लोग 'GotFocus() घटना फायरिंग नहीं एक UserControl के बारे में शिकायत की है। उदाहरण के लिए: UserControl and GotFocus() fyi: LostFocus() मेरे अनुभव में अपेक्षित रूप से आग लग जाएगा। अतीत में, एक से अधिक फार्म परियोजना में, मैं को लागू करने के साथ प्रयोग किया गया है 'दर्ज करें और' प्रत्येक फार्म पर एक UserControl पर ईवेंट हैंडलर्स छोड़ दो, और पाया कि 'एंटर केवल फार्म लोड पर कहा जाता है, एक बार।
जाहिर UserControl "फोकस ले" पर नियंत्रण (एक तरह से मैं व्याख्या नहीं कर सकते में, लेकिन शायद तो चलो WinForms गुरुओं में से एक होगा)। शायद यह इस तथ्य से संबंधित है कि UserControl ContainerControl से निकलता है?लोड घटना: 'UserControl में
private void Control_GotFocus(object sender, EventArgs e)
{
Console.WriteLine("Control GotFocus : " + ((sender as Control).Name));
}
और फिर, GotFocus() हैंडलर', कि ईवेंट हैंडलर को UserControl पर सभी नियंत्रण ऊपर वायर्ड:
मैं एक लेखन के साथ प्रयोग किया है जो मैं ने कहा कि था सबसे कम TabIndex के साथ UserControl पर नियंत्रण 'ऐप लॉन्च करने और फॉर्म के बीच स्विच करने पर' गॉटफोकस ईवेंट को आग लगा देगा।
इस स्थिति में मैंने जो एक और चीज देखी है, यह सुनिश्चित करना है कि 'UserControl की IsTabStop प्रॉपर्टी' पर सेट है, यह सच है: यह सिल्वरलाइट से संबंधित प्रश्न के संदर्भ में एमएस में शॉन वाइल्डर्मथ से था, इसलिए कोई फर्क नहीं पड़ता कि यह आपके मामले में लागू हो सकता है।
एक और सुझाव, जो उपयोगकर्ता नियंत्रण के लिए माउसडाउन या माउसक्लिक ईवेंट हैंडलर लिखना था, और उस कॉल में: this.SetFocus();
ने मुझे कहीं भी नेतृत्व नहीं किया।
आशा है कि आपको उत्तर मिलेगा!
यह नौकरी करना प्रतीत होता था। आपके द्वारा उल्लिखित जटिलताओं को हल करने के लिए मैं इसके साथ खेलना जारी रखूंगा। धन्यवाद! – Sambo
+1 NoBugz से एक और बड़ा जवाब पाने के लिए खुशी हुई। उत्सुक: इस मामले में क्या आपको लगता है कि ओपी उपयोगकर्ता नियंत्रण के बजाए फॉर्म का उपयोग करके बेहतर कर सकता है? – BillW
@ बिल: फॉर्म क्लास एक कंटेनर नियंत्रण भी है, हालांकि यह बिल्कुल उसी तरह से लड़ नहीं पाएगा। गैर-मानक यूआई प्रथाओं से बचने के लिए मेरी सलाह होगी। यह उपयोगकर्ता को भी भ्रमित करता है। –