2010-05-25 8 views
0

J'ai une ToolStripComboBox dans un ToolStrip, et quand j'appuie sur la touche TAB, elle donne le focus au prochain bouton de la barre d'outils. Je voudrais changer ce comportement et donner un focus à une riche zone de texte sur mon formulaire à la place.Touche de tabulation de poignée dans ToolStripComboBox

Le problème est que ToolStripComboBox n'a pas d'événement PreviewKeyDown. Et PreviewKeyDown de la barre d'outils ToolStrip d'hébergement n'est pas appelée lorsque la touche de tabulation est enfoncée dans la liste déroulante (juste lorsque vous cliquez dessus et qu'une touche d'outil est mise au point).

TabStop de la barre d'outils tooltrip est false.

Des idées?

Répondre

1

Vous pouvez attraper ceci au niveau du formulaire, avant que le contrôle ToolStrip ne saisisse la clé. Remplacez la méthode ProcessCmdKey() du formulaire, rendez-le semblable à ceci:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { 
     if (keyData == Keys.Tab && this.ActiveControl == toolStripComboBox1.Control) { 
      richTextBox1.Focus(); 
      return true; 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    }