2010-04-03 5 views
6

Je suis en train d'ajouter un événement « KeyPress » dans une zone de texte (WinForm)L'événement "KeyPress" pour la zone de texte WinForms est manquant?

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys); 

et est ici à l'intérieur des « CheckKeys »:

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 
    if (e.KeyChar == (char)13) 
    { 
     // Enter is pressed - do something 

    } 
} 

L'idée ici est qu'une fois une zone de texte est en focus et le bouton 'Entrée' a été pressé, quelque chose va arriver ...

Cependant, mon appareil ne trouve pas l'événement 'KeyPress'. Y a-t-il un problème avec mes codes?

MISE À JOUR:

J'ai aussi essayé de mettre KeyDown au lieu de KeyPress:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 

    if (e.Key == Key.Return) 

     // Enter is pressed - do something 
    } 
} 

ne fonctionne toujours pas si ...

+1

Avez-vous essayé de chercher KeyDown? – Chris

+1

Cela devrait fonctionner - Êtes-vous sûr de vous abonner à votre gestionnaire CheckKeys au bon endroit? Que se passe-t-il si vous mettez MessageBox.Show (e.KeyChar.ToString()) dans votre gestionnaire - capte-t-il des événements? – pduncan

+0

@Chris: ne fonctionne pas. J'essayais de créer un événement similaire à cliquer sur un bouton en appuyant sur Entrée. – abramlimpin

Répondre

9

Vous mélangez des bibliothèques de classes, n'utilisez pas les classes Windows Forms dans un projet WPF. Faites-le ressembler à ceci:

public partial class Window1 : Window { 
    public Window1() { 
     InitializeComponent(); 
     this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown); 
    } 

    private void textBox1_KeyDown(object sender, KeyEventArgs e) { 
     if (e.Key == Key.Enter) { 
     MessageBox.Show("Enter!"); 
     e.Handled = true; 
     } 
    } 
    } 
6

Avez-vous regardé le documentation sur KeyPress? Il indique spécifiquement que L'événement KeyPress n'est pas déclenché par des clés non-caractère; toutefois, les clés non-caractère soulèvent les événements KeyDown et KeyUp. L'utilisation de l'un de ces événements devrait plutôt fonctionner.

+0

@Anders: avez essayé d'utiliser KeyDown à la place. J'essayais d'appeler un Storyboard (à partir de WPF) en appuyant sur Entrée, mais rien ne s'est passé. – abramlimpin

-4

essayez les étapes suivantes cela va fonctionner, bcoz je l'ai testé.

  1. sélectionnez la zone de texte, faites un clic droit dessus, puis cliquez sur Propriétés.
  2. cliquez sur l'événement, puis double-cliquez sur KeyPress
  3. puis tapez le code suivant.

    private void textBox2_KeyPress(object sender, KeyPressEventArgs e) 
    { 
        if (e.KeyChar == (char)13) 
        {    
         //press Enter do Something Like i have messagebox below to show "wow" 
         MessageBox.Show("wow"); 
        } 
        else 
        { 
        } 
    } 
    
+4

Cela fonctionne * parce que vous l'avez testé? –

Questions connexes