Windows Form: la pressione del tasto Invio attiva il pulsante di invio?


95

Come posso acquisire le pressioni dei tasti di immissione in qualsiasi punto del modulo e forzarlo ad attivare l'evento del pulsante di invio?


8
Allora perché non premi la proprietà AcceptButton sulla risposta di Matt Hamilton?
— Mukus

usa "this.Form.DefaultButton = MyButton.UniqueID;"
— Bino Kochumol Varghese

Risposte:


196

Se si imposta la Form's AcceptButtonproprietà per una delle Buttons sul Form, si otterrà che il comportamento di default.

Altrimenti, imposta la KeyPreviewproprietà truesu Forme gestisci il suo KeyDownevento. È possibile verificare la Enterchiave e intraprendere l'azione necessaria.


8
e non dimenticare il pulsante Annulla per gestire la pressione del tasto Escape
— WholeLifeLearner

1
Eccezionale! Devo conoscere meglio il mio Framewrok;)
— Jack

24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}

22

È possibile designare un pulsante come "AcceptButton" nelle proprietà del modulo e questo rileverà qualsiasi pressione di tasto "Invio" sul modulo e li instraderà a quel controllo.

Vedere Procedura: designare un pulsante Windows Form come pulsante Accetta utilizzando la finestra di progettazione e notare le poche eccezioni che delinea (caselle di testo su più righe, ecc.)


Grazie per il collegamento, quelle eccezioni mi hanno trattenuto.
— ubiquibacon

Questo collegamento sembra essere morto.
— JAD

10

Come affermato in precedenza, imposta la proprietà AcceptButton del modulo su uno dei suoi pulsanti E imposta la proprietà DialogResult per quel pulsante su DialogResult.OK , in modo che il chiamante sappia se la finestra di dialogo è stata accettata o chiusa.


6

Puoi iscriverti KeyUpall'evento del TextBox.

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

1
Proprio quello che stavo cercando. Ho il pulsante dialogresult impostato su OK e non volevo scrivere codice non necessario per far funzionare ENTER!
— Kristjan1215


1

Basta usare

this.Form.DefaultButton = MyButton.UniqueID;  

** Metti l'ID del tuo pulsante al posto di "MyButton".


0

Imposta l'attributo KeyPreview nel modulo su True, quindi utilizza l'evento KeyPress a livello di modulo per rilevare il tasto Invio. Al rilevamento chiama qualsiasi codice avresti per il pulsante "invia".


0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.