2010-11-16 18 views
46

जब आप दबाते हैं तो एचटीएमएल form में कहीं भी दर्ज करें, यह action ट्रिगर करता है, जो submit बटन दबाकर बराबर है। एक विंडो कैसे बनाएं जब मैं दबाएं कहीं भी यह एक ईवेंट ट्रिगर करेगा?WPF में सबमिट बटन कैसे बनाएं?

+0

क्या WPF में कोई मुख्य पूर्वावलोकन संपत्ति है? यदि ऐसा है, तो इसे सही पर सेट करने से सभी मुख्य प्रेस सीधे फ़ॉर्म पर भेजेंगे और आप इसे करने के लिए कीप्रेस ईवेंट का उपयोग कर सकते हैं। –

उत्तर

91

सक्षम करने के लिए कि बटन की कार्रवाई को सक्रिय करने के कुंजी दर्ज सच करने के लिए बटन पर IsDefault संपत्ति सेट करें। IsCancel संपत्ति भी है जो एस्केप कुंजी के लिए एक ही चीज़ करती है।

+1

यह मेरे उत्तर में मेरा पहला सुझाव था लेकिन फिर मैंने देखा कि XMLforDummies ने यह नहीं कहा था कि उसके पास फॉर्म पर "ठीक" या "सबमिट" बटन था इसलिए मैंने अपना जवाब संपादित किया। इस समाधान के साथ आप एकमात्र "समस्या" चला सकते हैं, यदि "ठीक"/"सबमिट करें" बटन के अलावा कोई अन्य बटन फोकस कर रहा है, तो एंटर कुंजी दबाकर केवल फोकस बटन पर क्लिक किया जाएगा और अन्य ईवेंट को ट्रिगर नहीं करेगा शायद आप क्या उम्मीद करते हैं लेकिन बस उस बिंदु को लाना चाहते थे। – ihatemash

+1

मुझे लगता है कि व्यवहार जानबूझकर है। उदाहरण के लिए, यदि उस बटन ने एक मोडल संवाद खोला है, और एंटर कुंजी मारकर यह सबमिट ट्रिगर करता है, तो आप दोनों घटनाओं को आग नहीं करना चाहेंगे। –

6

XAML में खिड़की के PreviewKeyDown घटना असाइन करें तो codebehind में KeyEventArgs जाँच निर्धारित करने के लिए करता है, तो उपयोगकर्ता दबाया कुंजी दर्ज करें।

XAML कोड:

<Window 
    [...] 
    PreviewKeyDown="Window_PreviewKeyDown"> 

कोड के पीछे:

private void Window_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Enter) 
    { 
     // Whatever code you want if enter key is pressed goes here 
    } 
} 
+0

क्षमा करें, मुझे अभी एहसास हुआ कि आपने यह नहीं कहा कि आपके पास फॉर्म पर एक बटन है। यह काम करने से पहले आपके पास फॉर्म पर एक बटन होना चाहिए। – ihatemash

+1

यदि नहीं, तो बस विंडो गुणों के लिए IsHitTestVisible = "true" जोड़ें – Guy

+0

चेतावनी: यह ईवेंट विंडो, यहां तक ​​कि अन्य बटनों में किसी भी नियंत्रण पर ट्रिगर करेगा। जो आम तौर पर एक मुद्दा नहीं है जब तक कि आपके उपयोगकर्ता फॉर्म के चारों ओर टैब न करें और बटन क्लिक करने के लिए एंटर का उपयोग करें। –

0

मुझे पता चला कि DatePicker नियंत्रण निगल जाएगा कीप्रेस दर्ज करें ताकि डिफ़ॉल्ट बटन क्लिक न हो। मैंने इस घटना को संभालने के लिए इस ईवेंट हैंडलर को लिखा था। यह सुनिश्चित करने के लिए कि DatePicker डिफ़ॉल्ट बटन पर क्लिक करने से पहले अपना दिनांक स्वरूपण कोड निष्पादित करता है, PreviewKeyUp का उपयोग करें।

private void DatePicker_PreviewKeyUp(object sender, KeyEventArgs e) { 
    // event handler to click the default button when you hit enter on DatePicker 
    if (e.Key == Key.Enter) { 
     // https://www.codeproject.com/Tips/739358/WPF-Programmatically-click-the-default-button 
     System.Windows.Input.AccessKeyManager.ProcessKey(null, "\x000D", false); 
    } 
} 
संबंधित मुद्दे