2010-04-03 13 views
6

Sto cercando di aggiungere un evento "KeyPress" in una casella di testo (WinForm)Manca "KeyPress" per la casella di testo WinForms?

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

ed ecco all'interno dell 'CheckKeys':

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

    } 
} 

L'idea è che una volta che una casella di testo è in è stato premuto il pulsante di messa a fuoco e è stato premuto il pulsante "Invio", è possibile che qualcosa accada ...

Tuttavia, la mia macchina non riesce a trovare l'evento "KeyPress". C'è qualcosa che non va nei miei codici?

UPDATE:

Ho anche provato a mettere KeyDown invece di KeyPress:

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

    if (e.Key == Key.Return) 

     // Enter is pressed - do something 
    } 
} 

Ancora non funziona però ...

+1

Hai provato alla ricerca di KeyDown? – Chris

+1

Questo dovrebbe funzionare - sei sicuro di iscriverti al tuo gestore CheckKeys nel posto giusto? Cosa succede se metti MessageBox.Show (e.KeyChar.ToString()) nel gestore: rileva qualche evento? – pduncan

+0

@Chris: non funziona. Stavo cercando di creare un evento simile a fare clic su un pulsante premendo Invio. – abramlimpin

risposta

9

Si stanno mescolando le librerie di classi, non utilizzare le classi di Windows Form in un progetto WPF. Assomiglia a questo:

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

Avete guardato il documentation su KeyPress? Dichiara specificatamente che L'evento KeyPress non viene generato da chiavi non di caratteri; tuttavia, i tasti non caratteri eseguono gli eventi KeyDown e KeyUp. Utilizzare uno di questi eventi dovrebbe funzionare.

+0

@Anders: ha provato a usare KeyDown. Stavo cercando di chiamare uno storyboard (da WPF) premendo Invio, ma non è successo nulla. – abramlimpin

-4

provare i seguenti passaggi funzionerà, bcoz l'ho provato.

  1. selezionare la casella di testo, fare clic con il pulsante destro del mouse su di essa, quindi fare clic su Proprietà.
  2. click su eventi, quindi fare doppio clic su KeyPress
  3. quindi digitare il seguente codice.

    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

Funziona * perché * l'hai provato? –

Problemi correlati