मैंने PreviewLostKeyboardFocus
के साथ गड़बड़ी की है जो लगभग आपको वहां ले जाती है। मैंने LostFocus
का उपयोग करके कुछ कार्यान्वयन देखा है, लेकिन यह ध्यान केंद्रित करने के बाद TextBox
पर वापस ध्यान केंद्रित करता है और आप आसानी से स्क्रीन पर इस स्थानांतरण को देख सकते हैं। असल में, मैं केवल उसी प्रकार के व्यवहार की तलाश कर रहा हूं जिसे आप WinForms में OnValidating
का उपयोग कर प्राप्त कर सकते हैं।सत्यापन त्रुटि होने पर टेक्स्टबॉक्स फोकस को रोकने से रोकने का सबसे अच्छा तरीका क्या है?
उत्तर
मेरी राय में, सबसे अच्छा तरीका आम तौर पर ऐसा नहीं करना है। अन्य नियंत्रणों को अक्षम करने या मूल्य वैध होने तक बचत को रोकने के लिए लगभग हमेशा बेहतर होता है।
लेकिन अगर अपने डिजाइन वास्तव में इस क्षमता की जरूरत है, यहाँ आप क्या करना चाहिए है:
अवरोधन अपनी खिड़की स्तर पर कीबोर्ड और माउस की घटनाओं के
Preview
संस्करण, या जो कुछ भी गुंजाइश आप ध्यान परिवर्तनों को रोकने के लिए चाहते हैं भीतर (उदाहरण के लिए शायद आपका मेनू बार नहीं)।जब टेक्स्ट कुंजी में टैब कीडाउन या रिटर्न कीडाउन का पता लगाया जाता है, या जब टेक्स्ट बॉक्स के बाहर माउसडाउन का पता लगाया जाता है, तो बाध्यकारी अभिव्यक्ति पर अपडेटसोर्स() को कॉल करें, फिर सत्यापन विफल हो गया है KeyDown या MouseDown ईवेंट को संसाधित होने से रोकने के लिए हैंडल = सत्य सेट करें।
कीबोर्ड या माउस से नहीं हैं, या आपके अन्य कोड को पहचानने वाले फोकस परिवर्तन के किसी भी कारण को पकड़ने के लिए
PreviewLostKeyboardFocus
को संभालना जारी रखें।
वैश्विक (विंडो स्तर) माउस ईवेंट कैसे पकड़ें? यदि हमारे पास कंटेनर नियंत्रण है और फोकस संपादक के अंदर रहना चाहिए जब तक वैध डेटा पास नहीं किया जाएगा। –
रे की जवाब पर जोड़ने के लिए:
UpdateSource तो जैसे कहा जाता है:
BindingExpression be = userTextbox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
इसके अलावा, एक विकल्प के रूप में आप के लिए बाध्य पाठ बॉक्स सेट कर सकते हैं:
UpdateSourceTrigger = "PropertyChanged";
उत्तरार्द्ध एक निरंतर जांच का कारण बनता है, जबकि पूर्व आवश्यक (प्रदर्शनकर्ता) की जांच करेगा।
आप अपने स्वयं के LostFocus हैंडलर के अंदर एक तत्व आप एक StackOverflowException का सामना करना पड़ेगा ध्यान केंद्रित करने का प्रयास करते हैं, मैं मूल कारण (मैं चारों ओर बाउंस का ध्यान केंद्रित तरह संदेह है) के बारे में यकीन नहीं है लेकिन वहाँ एक आसान समाधान नहीं है: यह प्रेषण ।
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
var element = (sender as TextBox);
if (!theTextBoxWasValidated())
{
// doing this would cause a StackOverflowException
// element.Focus();
var restoreFocus = (System.Threading.ThreadStart)delegate { element.Focus(); };
Dispatcher.BeginInvoke(restoreFocus);
}
}
Dispatcher.BeginInvoke के माध्यम से
आप यह सुनिश्चित करें कि फोकस बहाल ध्यान की प्रगति नुकसान के रास्ते में नहीं मिलता है (और बुरा अपवाद आप अन्यथा का सामना करना चाहते हैं बचने के लिए)
- 1. कक्षा को तत्काल होने से रोकने का सबसे अच्छा तरीका?
- 2. चुपचाप विफल होने से जावास्क्रिप्ट को रोकने का कोई तरीका?
- 3. फोकस चोरी सत्र को रोकने से रोकें
- 4. क्या यह हैंडलरथ्रेड को रोकने का एक प्रीफेक्ट तरीका है?
- 5. फील्ड स्तर सत्यापन होने पर मोडल फॉर्म को रद्द करने का सबसे अच्छा तरीका क्या है?
- 6. क्या सोफेड इंडेक्सर प्रक्रिया को रोकने का कोई तरीका है?
- 7. मोबाइल उपकरणों पर विशिष्ट जावास्क्रिप्ट फ़ंक्शन को रोकने का सबसे अच्छा तरीका
- 8. क्या उप-वर्गों में किसी विधि को ओवरराइड होने से रोकने का कोई तरीका है?
- 9. क्या CABasicAnimation को रोकने का कोई तरीका है?
- 10. क्या Windows PowerShell का उपयोग कर प्रक्रियाओं को रोकने का एक अच्छा तरीका है?
- 11. एकाधिक क्रोम.स्टॉरेज एपीआई कॉल में दौड़ की स्थिति को रोकने के लिए सबसे अच्छा तरीका है?
- 12. एरलांग। सही तरीका प्रक्रिया को रोकने के
- 13. क्रेडिट कार्ड के डुप्लिकेट उपयोग को रोकने के लिए सबसे अच्छा तरीका
- 14. एक इंटरफ़ेस को विस्तारित होने से रोकने के लिए
- 15. क्या sys.exit() से पकड़े गए SystemExit अपवाद को पकड़े जाने से रोकने का कोई तरीका है?
- 16. क्या AlertDialog को अमान्य इनपुट के साथ बंद करने से रोकने का कोई तरीका है?
- 17. क्या एक्सकोड को इंटरनेट से डाउनलोड करने से रोकने का कोई तरीका है?
- 18. क्या पृष्ठ पर सभी जावास्क्रिप्ट को रोकने का कोई तरीका है?
- 19. क्या कैलेयर छाया को आसन्न परतों को ओवरलैप करने से रोकने का कोई तरीका है?
- 20. थ्रेड को रोकने के लिए एंड्रॉइड सबसे अच्छा और सुरक्षित तरीका
- 21. सी # में टेक्स्टबॉक्स पर इनपुट प्रतिबंध लागू करने का सबसे अच्छा तरीका क्या है?
- 22. क्या पीआईडी का उपयोग करके mplayer को रोकने और रोकने के लिए कोई आदेश है?
- 23. एप्लिकेशन पूल को रीसाइक्लिंग होने पर एप्लिकेशन प्रारंभ करने का सबसे अच्छा तरीका क्या है?
- 24. जावा थ्रेड को मजबूती से रोकने के लिए कोई अच्छा तरीका है?
- 25. क्या संकलन-समय पर बुलाए जाने वाले तरीके को रोकने का कोई तरीका है?
- 26. वेबसाइट पर वीडियो देने का सबसे अच्छा तरीका क्या है?
- 27. ओएस एक्स पर नींद को रोकने का सही तरीका क्या है?
- 28. जावास्क्रिप्ट में अपने युक्त div पर क्लिक करते समय पाठ को हाइलाइट करने से रोकने का सबसे अच्छा तरीका क्या है?
- 29. क्या ब्राउजर ऑटोफिल इनपुट बॉक्स को रोकने का कोई तरीका है?
- 30. क्या AJAX पृष्ठों को ब्राउज़र में अकेले देखने से रोकने का कोई तरीका है?
फोकस पकड़ने बनाने नियंत्रण में खराब उपयोगकर्ता अनुभव हो सकता है ... बस उपयोगकर्ताओं को उस संवाद/विंडो चीज़ से आसानी से बाहर निकलने दें ... –