2009-06-13 6 views
1

Salut, j'ai une application winform C# avec un formulaire particulier rempli avec un certain nombre de zones de texte. Je voudrais faire en sorte qu'en appuyant sur la touche fléchée droite cela mime le même comportement que d'appuyer sur la touche de tabulation. Je ne suis pas vraiment sûr de savoir comment faire cela.C# Winform Alter Sent Keystroke

Je ne veux pas changer du tout le comportement de la touche de tabulation, juste obtenir la flèche droite pour faire la même chose sur ce formulaire.

Quelqu'un peut-il offrir des suggestions?

Répondre

2

Vous devriez remplacer la méthode OnKeyUp dans votre formulaire pour faire ...

protected override void OnKeyUp(KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Right) 
    { 
     Control activeControl = this.ActiveControl; 

     if(activeControl == null) 
     { 
      activeControl = this; 
     } 

     this.SelectNextControl(activeControl, true, true, true, true); 
     e.Handled = true; 
    } 

    base.OnKeyUp(e); 
} 
+0

Salut Brian, cela semble fonctionner, mais il ne fait que répéter les contrôles sur le conteneur sur lequel il réside - c'est-à-dire - la boîte de groupe par exemple. donc si j'ai 3 groupboxes avec des contrôles il ne passera pas au suivant comme la touche de tabulation –

+0

Je le mettrai à jour pour utiliser SelectNext qui je pense fonctionne récursivement sur les conteneurs. –

0

Je pense que cela va accomplir ce que vous vous demandez:

private void form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Right) 
    { 
     Control activeControl = form1.ActiveControl; 
     // may need to check for null activeControl 
     form1.SelectNextControl(activeControl, true, true, true, true); 
    } 
} 
0

Vous pouvez utiliser l'événement KeyDown sur le formulaire pour piéger la course clé, puis effectuer toutes les mesures que vous voulez. Par exemple:

private void MyForm_KeyDown(object sender, KeyEventArgs e) 
{ 
    if(e.KeyCode == Keys.Right) 
    { 
     this.SelectNextControl(....); 
     e.Handled = true; 
    } 
} 

N'oubliez pas de définir la propriété KeyPreview sur le formulaire sur True.

+0

Je l'emporterait sur la méthode au lieu d'utiliser l'événement. En outre, je ne le ferais pas sur KeyDown, vous devriez vraiment suivre entre la touche vers le bas et vers le haut pour vous assurer que vous avez une touche complète appropriée. –

Questions connexes