2009-11-28 12 views
9

Quando l'utente immette un numero in una casella di testo, vorrei che fossero in grado di premere Invio e simulare la pressione di un pulsante Aggiorna in un altro punto del modulo. Ho consultato diversi siti online e questo sembra essere il codice che voglio, ma non funziona. Quando i dati sono stati inseriti nella casella di testo e viene premuto Invio, tutto ciò che ottengo è un ding. Che cosa sto facendo di sbagliato? (Visual Studio 2008)Impossibile acquisire il tasto Invio nella casella di testo WinForms

private void tbxMod_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     btnMod.PerformClick(); 
    } 
} 
+1

Prova questa soluzione ... sta funzionando .... private void button1_Click (object sender, EventArgs e) { MessageBox.Show ("viene premuto"); } vuoto TextBox1_KeyPress privato (object sender, KeyPressEventArgs e) {if (e.KeyChar == '\ r') { button1.PerformClick(); } } Qui il codice che ti permetterà di premere il pulsante quando premi enter nella casella di testo .... check it out .... –

risposta

5

Qualche considerazione:

  • fa la forma hanno una accettare pulsante (impostato sul Form) che potrebbe essere rubato ret
  • fa il testo hanno validazione abilitata e fallendo? prova a disattivarlo
  • qualcosa ha abilitato l'anteprima chiave?
+0

a) Nope b) Sto convalidando l'input all'interno della funzione _Click utilizzando int32.tryparse, ma solo dopo l'evento Click. Ho provato a commentare l'intera funzione e semplicemente inserendo un MessageBox e ancora non ha funzionato. 3) Controllato dal controllo del modulo: l'anteprima chiave è disattivata. Ho anche esaminato le quattro risposte seguenti. Niente sembra fare il trucco finora. –

0

proprietà del modulo> Imposta KeyPreview true

1

Impostare e.Handled a true immediatamente dopo la riga btnMod.PerformClick();.

Spero che questo aiuti.

9

Sei sicuro che il clic sul pulsante non viene eseguito? Ho appena fatto un test, funziona bene per me. Ed ecco il modo per prevenire il suono "ding":

private void tbxMod_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     btnMod.PerformClick(); 
     e.SuppressKeyPress = true; 
    } 
} 
2

Sotto "Proprietà" del modulo. Categoria (Varie) ha le seguenti opzioni:

AcceptButton, CancelButton, KeyPreview, & ToolTip.

Impostare AcceptButton sul pulsante su cui si desidera fare clic quando si preme il tasto Immettere la chiave per eseguire il trucco.

0

Il semplice codice riportato di seguito funziona correttamente (premendo il tasto Invio mentre in textBoxPlatypusNumber viene visualizzato "UpdatePlatypusGrid() immesso"); KeyPreview del modulo è impostato su false:

private void textBoxPlatypusNumber_KeyDown(object sender, KeyEventArgs e) { 
    if (e.KeyCode == Keys.Enter) 
    { 
     UpdatePlatypusGrid(); 
    } 
} 

private void UpdatePlatypusGrid() 
{ 
    MessageBox.Show("UpdatePlatypusGrid() entered"); 
} 
1

Ho dovuto combinare la risposta di Thomas e Marc's. Ho avuto un AcceptButton insieme sulla forma quindi ho dovuto fare tutto questo:

private void tbxMod_Enter(object sender, EventArgs e) 
    { 
     AcceptButton = null; 
    } 

    private void tbxMod_Leave(object sender, EventArgs e) 
    { 
     AcceptButton = buttonOK; 
    } 

    private void tbxMod_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      // Click your button here or whatever 
      e.Handled = true; 
     } 
    } 

Ho usato t0mm13b di e.Handled, anche se Thomas' e.SuppressKeyPress sembra funzionare pure. Non sono sicuro di quale potrebbe essere la differenza.

Problemi correlati