Windows Forms - Enter keypress aktywuje przycisk przesyłania?


95

Jak mogę przechwycić naciśnięcia klawiszy w dowolnym miejscu formularza i zmusić go do uruchomienia zdarzenia przycisku przesyłania?


8
Dlaczego więc nie naciśniesz właściwości AcceptButton w odpowiedzi Matta Hamiltona?
Mukus

use 'this.Form.DefaultButton = MyButton.UniqueID;'
Bino Kochumol Varghese

Odpowiedzi:


196

Jeśli Twoje ustawienia Form„s AcceptButtonwłaściwość do jednego z ButtonS na Form, dostaniesz to zachowanie domyślne.

W przeciwnym razie ustaw KeyPreviewwłaściwość truena Formi obsłuż jej KeyDownzdarzenie. Możesz sprawdzić Enterklucz i podjąć niezbędne działania.


8
i nie zapomnij o CancelButton do obsługi Escape
keypress

1
Niesamowite! Muszę lepiej poznać moje Framewrok;)
Jack

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

22

Możesz wyznaczyć przycisk jako „AcceptButton” we właściwościach formularza, który będzie przechwytywał wszelkie naciśnięcia klawiszy „Enter” w formularzu i kierował je do tej kontrolki.

Zobacz, jak: wyznaczyć przycisk Windows Forms jako przycisk akceptacji za pomocą projektanta i zwróć uwagę na kilka wyjątków, które przedstawia (wielowierszowe pola tekstowe itp.)


Dzięki za link, te wyjątki, w których mnie trzymają.
ubiquibacon

Wygląda na to, że ten link umarł.
JAD

10

Jak wspomniano wcześniej, ustaw właściwość AcceptButton formularza na jeden z jego przycisków ORAZ ustaw właściwość DialogResult dla tego przycisku na DialogResult.OK , aby wywołujący wiedział, czy okno dialogowe zostało zaakceptowane, czy odrzucone.


6

Możesz zapisać się na KeyUpwydarzenie TextBox.

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

1
Właśnie tego szukałem. Mam okno dialogowe przycisku ustawione na OK i nie chciałem pisać niepotrzebnego kodu, aby ENTER działał!
Kristjan1215



0

Ustaw atrybut KeyPreview w formularzu na True, a następnie użyj zdarzenia KeyPress na poziomie formularza, aby wykryć klawisz Enter. Po wykryciu wywołaj dowolny kod, który chcesz przypisać do przycisku „Prześlij”.


0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.