2008-10-22 3 views
13

Toute idée comment arrêter la cloche du système retentit lorsque CTRL - A est utilisé pour sélectionner du texte dans une application Winforms?Bell sur CTRL-A (WinForms)

Voici le problème. Créez un projet Winforms. Placez une zone de texte sur le formulaire et ajoutez le gestionnaire d'événements suivant sur le formulaire pour autoriser CTRL - A pour sélectionner tout le texte dans la zone de texte (quel que soit le contrôle a le focus).

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; 
    } 
} 

Il fonctionne, mais malgré e.Handled = true, la cloche du système sonore retentit chaque fois CTRL - A est pressé.


Merci pour la réponse. KeyPreview sur le formulaire est défini sur true - mais cela n'empêche pas la cloche du système de retentir - ce qui est le problème que j'essaie de résoudre - ennuyeux.

Répondre

1

Cela a fonctionné pour moi:

Réglez le KeyPreview sur le formulaire True.

Espérons que ça aide.

6

Merci à un poste Forum MSDN - ce problème ne se produit que lorsque sont en mode textboxes multiligne et que vous souhaitez mettre en œuvre Ctrl +A pour tout sélectionner.

est ici la solution

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; 
     } 
    } 

espérons que cette aide

1

@ solution H7O est bonne, mais je me suis amélioré un peu pour les composants TextBox se multiplient sur la forme.

private void textBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.A) 
    { 
    ((TextBox)sender).SelectAll(); 
    e.SuppressKeyPress = true; 
    } 
} 
Questions connexes