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.