2008-10-22 17 views
13

कोई भी विचार कैसे लग जब CTRL से प्रणाली घंटी को रोकने के लिए - एक एक Winforms आवेदन में पाठ का चयन करने के लिए प्रयोग किया जाता है?Ctrl-A पर बेल बंद करो (WinForms)

यहां समस्या है। एक Winforms परियोजना बनाएँ। फॉर्म पर एक टेक्स्ट बॉक्स रखें और CTRL - टेक्स्टबॉक्स में सभी टेक्स्ट का चयन करने के लिए फॉर्म पर निम्न इवेंट हैंडलर जोड़ें (इससे कोई फर्क नहीं पड़ता कि कौन सा नियंत्रण फोकस करता है)।

void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.A && e.Modifiers == Keys.Control) 
    { 
     System.Diagnostics.Debug.WriteLine("Control and A were pressed."); 
     txtContent.SelectionStart = 0; 
     txtContent.SelectionLength = txtContent.Text.Length; 
     txtContent.Focus(); 
     e.Handled = true; 
    } 
} 

यह काम करता है, लेकिन बावजूद e.Handled = सच है, प्रणाली घंटी CTRL हर बार ध्वनि जाएगा - एक दबाया जाता है।


उत्तर के लिए धन्यवाद।

फॉर्म पर कीप्रेव्यू सही पर सेट है - लेकिन यह सिस्टम घंटी बजने से नहीं रोकता है - जो समस्या मैं हल करने की कोशिश कर रहा हूं - परेशान।

उत्तर

1

यह मेरे लिए काम किया:

सही पर प्रपत्र पर KeyPreview सेट करें।

उम्मीद है कि मदद करता है।

6

एक MSDN फोरम पोस्ट करने के लिए धन्यवाद - इस समस्या को केवल तब होता है जब बक्सें बहु मोड में हैं और आप Ctrl +एक सभी का चयन के लिए लागू करना चाहते हैं।

यहाँ समाधान

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.A | Keys.Control)) { 
    txtContent.SelectionStart = 0; 
    txtContent.SelectionLength = txtContent.Text.Length; 
    txtContent.Focus(); 
    return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
21
private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Control && e.KeyCode == Keys.A) 
     { 
      this.textBox1.SelectAll(); 
      e.SuppressKeyPress = true; 
     } 
    } 

आशा है कि यह मदद करता है

1

@ H7O समाधान अच्छा है है, लेकिन मैं यह फार्म पर गुणा पाठ बॉक्स घटकों के लिए एक सा सुधार हुआ है।

private void textBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.A) 
    { 
    ((TextBox)sender).SelectAll(); 
    e.SuppressKeyPress = true; 
    } 
} 
संबंधित मुद्दे