2010-02-06 11 views
26

लंबे शीर्षक के लिए खेद है, लेकिन मैं इसे रखने का दूसरा तरीका नहीं सोच सका।सी #: टेक्स्ट बॉक्स में एंटर दबाए जाने के लिए बटन को ट्रिगर कैसे करें, फिर भी अभी भी "Ctrl + A" जैसे शॉर्टकट को अनुमति दें?

मैं इस है:

private void textBoxToSubmit_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      buttonSubmit_Click((object)sender, (EventArgs)e); 
     } 
    } 

... आदेश अहम पाठ बॉक्स में दर्ज करें "सबमिट करें" बटन को गति प्रदान करने के लिए। हालांकि, यह शॉर्टकट से गुजरने से भी रोकता है। (यह सुनिश्चित नहीं है कि इसके साथ क्या करना है, शायद केवल बहु-कुंजी combos?)

शॉर्टकट्स सक्षम सक्षम है।

अग्रिम धन्यवाद!

+0

कोई रेपो नहीं, मुझे किसी की उम्मीद नहीं थी। बीपिंग रोकने के लिए आपको e.SuppressKey = true की आवश्यकता होगी। –

+0

शीर्षक के लिए: आप अपने प्रश्न निकाय की पहली वाक्य में अभी तक भाग डाल सकते थे। वैसे भी पहली वाक्य ऑफ-विषय है। – Bitterblue

उत्तर

37

क्या आप प्रपत्र गुण विंडो के लिए AcceptButton का उपयोग नहीं कर सकते? यह के लिए डिफ़ॉल्ट व्यवहार सेट करता है कुंजी दबाएं, लेकिन आप अभी भी अन्य शॉर्टकट का उपयोग करने में सक्षम हैं।

+0

मुझे लगता है! इसे स्पष्ट करने के लिए धन्यवाद। मैं स्पष्ट रूप से सी # के लिए नया हूं, इस तरह की साधारण चीजें मुझे भ्रमित करती हैं। धन्यवाद! –

+0

कोई समस्या नहीं - मदद करने में खुशी :) –

+0

क्या होगा यदि आप प्रत्येक स्वीकार करने के लिए एकाधिक नियंत्रण चाहते हैं, हालांकि, और प्रत्येक के लिए एक बटन के साथ जरूरी नहीं है? – Nyerguds

14

यदि आप टेक्स्ट को केवल टेक्स्ट में ट्रिगर करने के लिए वापसी करना चाहते हैं, तो आप वांछित बटन को एसेप्टबटन नियंत्रण को असाइन कर सकते हैं।

private void textBox_Enter(object sender, EventArgs e) 
    { 
     ActiveForm.AcceptButton = Button1; // Button1 will be 'clicked' when user presses return 
    } 

    private void textBox_Leave(object sender, EventArgs e) 
    { 
     ActiveForm.AcceptButton = null; // remove "return" button behavior 
    } 
+0

उपयोगकर्ता नियंत्रण के मामले में, आप 'ParentForm.AcceptButton' –

10

आप कुंजी दबाने के बजाय KeyUp या का उपयोग कर सकते हैं KeyDown इसकी अधिक कुशल और यहाँ को संभालने के लिए कैसे

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == (char)Keys.Enter) 
     { 
      e.Handled = true; 
      button1.PerformClick(); 
     } 
    } 

यह

+0

का उपयोग कर सकते हैं क्या इसे बटन के मुकाबले अन्य नियंत्रणों के ईवेंट श्रोताओं के लिए विस्तारित किया जा सकता है? मुझे अपनी डबल-क्लिक कार्रवाई को ट्रिगर करने के लिए कोई ListBox.PerformDoubleClick() नहीं दिख रहा है। – Nyerguds

+0

आह, कभी नहीं। केवल अंतर्निहित श्रोता समारोह को कॉल करना आसान है। वैसे ... अगर इस फॉर्म में AcceptButton सेट है तो यह कोड काम नहीं कर रहा है। – Nyerguds

1

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

आप देखेंगे कि "इनपुट-समूह" की कक्षा के साथ नियमित < div> टैग का उपयोग करने के स्थान पर मैंने एएसपी: पैनल का उपयोग किया है। डिफॉल्टबटन संपत्ति मेरे बटन की आईडी पर सेट है, यह चाल है।

उदाहरण के लिए, इनपुट टेक्स्टबॉक्स में कुछ टाइप करने के बाद, आप बस एंटर दबाएं और इसके परिणामस्वरूप सबमिट हो जाएगा।

<asp:Panel DefaultButton="btnblogsearch" runat="server" CssClass="input-group blogsearch"> 
<asp:TextBox ID="txtSearchWords" CssClass="form-control" runat="server" Width="100%" Placeholder="Search for..."></asp:TextBox> 
<span class="input-group-btn"> 
    <asp:LinkButton ID="btnblogsearch" runat="server" CssClass="btn btn-default"><i class="fa fa-search"></i></asp:LinkButton> 
</span></asp:Panel> 

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

  • कोई संबंधित समस्या नहीं^_^