c# - WPF: A TextBox that has an event that fires when the Enter Key is pressed -
मेरे ऐप में PreviewKeyUp ईवेंट को प्रत्येक TextBox के साथ संलग्न करने के बजाय और जांच की कि दबती हुई कुंजी एक एन्टर की थी और फिर एक क्रिया करने के बाद, मैंने एक Textbox के विस्तारित संस्करण को लागू करने का निर्णय लिया जिसमें एक एक्शन की गई कुंजी को एक पाठ बॉक्स ।
मैंने जो कुछ किया था, वह मूल रूप से एक नया वर्ग बनाते हैं जो एक सार्वजनिक कार्यक्रम DefaultAction से TextBox से फैली हुई है, जैसे:
सार्वजनिक वर्ग DefaultTextBoxControl: टेक्स्टबॉक्स {सार्वजनिक ईवेंट इवेंटहैंडलर & lt; EventArgs & gt; डिफ़ॉल्ट एक्शन = प्रतिनिधि {}; सार्वजनिक डिफ़ॉल्ट टेक्स्टबॉक्स नियंत्रक () {PreviewKeyUp + = DefaultTextBoxControl_PreviewKeyUp; } शून्य DefaultTextBoxControl_PreviewKeyUp (ऑब्जेक्ट प्रेषक, System.Windows.Input.KeyEventArgs ई) {if (e.Key! = Key.Enter) {return; } डिफ़ॉल्ट एक्शन (यह, EventArgs.Empty); }} तब मैं अपने ऐप (xaml) जैसे इस कस्टम टेक्स्टबॉक्स का उपयोग करता हूं:
& lt; नियंत्रण: डिफ़ॉल्ट टेक्स्टबॉक्स नियंत्रण डिफ़ॉल्ट एक्शन = "डिफ़ॉल्ट टेक्स्टबॉक्स नियंत्रण डेफॉल्ट एक्शन" & gt; & Lt; / नियंत्रण: DefaultTextBoxControl & gt; अब मेरे छोटे से अनुभव में मुझे WPF सीखने में पड़ा है मुझे यह महसूस हुआ है कि ज्यादातर समय "कूलर" (और उम्मीद है कि आसान) को लागू करने का तरीका है
... तो मेरा सवाल है, मैं उपरोक्त नियंत्रण कैसे सुधार सकता हूं? या हो सकता है कि कोई अन्य तरीका मैं उपरोक्त नियंत्रण कर सकता हूं? ... शायद दोनों घोषणात्मक (xaml) और प्रक्रियात्मक (सी #) के बजाय केवल घोषणात्मक कोड का प्रयोग करें?
कुछ महीनों पहले की तरफ देखें, जहां मैं पाठ को चुनने के लिए एक 'वैश्विक' ईवेंट हैंडलर को TextBox.GotFocus से जोड़ता हूं।
मूलतः आप अपने ऐप कक्षा में कुंजी अप ईवेंट को संभाल सकते हैं, जैसे:
संरक्षित ओवरराइड शून्य ओनस्टार्टअप (स्टार्टअपएवेंटएरग्स ई) {इवेंट मैनेजर। RegisterClassHandler (टाइपफ (पाठ बॉक्स), टेक्स्टबॉक्स। केयूईईईईईईईईईईईईटीईट, नई सिस्टम। विन्डोज़.इनपूट.केएएवेंटहैंडलर (पाठ बॉक्स_केउएप)); base.OnStartup (ई); } निजी शून्य TextBox_KeyUp (ऑब्जेक्ट प्रेषक, System.Windows.Input.KeyEventArgs ई) {if (e.Key! = System.Windows.Input.Key.Enter) वापसी; // आपके ईवेंट हैंडलर यहां ई। हँडल = सच; MessageBox.Show ("दबाएं दबाएं"); } ... और अब आपके ऐप में TextBox_KeyUp विधि कॉल करेंगे क्योंकि उपयोगकर्ता इन्हें टाइप करते हैं।
अपडेट
जैसा कि आपने अपनी टिप्पणी में बताया है, यह केवल तभी उपयोगी है जब हर टेक्स्ट बॉक्स को उसी कोड को निष्पादित करने की आवश्यकता होती है।
एन्टर कीप्रेस की तरह एक मनमाना घटना को जोड़ने के लिए, आप बेहतर तरीके से देख सकते हैं। मेरा मानना है कि यह आपको जो चाहें प्राप्त कर सकता है।
Comments
Post a Comment