Formulir Windows - Masukkan penekanan tombol mengaktifkan tombol kirim?

95

Bagaimana cara menangkap penekanan tombol enter di mana saja di formulir saya dan memaksanya untuk mengaktifkan acara tombol kirim?

FlySwat
sumber
8
Jadi mengapa Anda tidak menekan properti AcceptButton pada jawaban Matt Hamilton?
Mukus
gunakan 'this.Form.DefaultButton = MyButton.UniqueID;'
Bino Kochumol Varghese

Jawaban:

196

Jika Anda menetapkan Form's AcceptButtonproperti untuk salah satu Buttons pada Form, Anda akan mendapatkan bahwa perilaku secara default.

Jika tidak, setel KeyPreviewproperti ke truedi Formdan tangani KeyDownacaranya. Anda dapat memeriksa Enterkuncinya dan mengambil tindakan yang diperlukan.

Matt Hamilton
sumber
8
dan jangan lupa tentang CancelButton untuk menangani
tekanan
1
Hebat! Saya perlu tahu lebih baik Framewrok saya;)
Jack
24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}
ruvi
sumber
22

Anda dapat menentukan tombol sebagai "AcceptButton" di properti Formulir dan itu akan menangkap setiap penekanan tombol "Enter" pada formulir dan mengarahkannya ke kontrol itu.

Lihat Cara: Menunjuk Tombol Formulir Windows sebagai Tombol Terima Menggunakan Desainer dan perhatikan beberapa pengecualian yang diuraikannya (kotak teks multi-baris, dll.)

bouvard
sumber
Terima kasih untuk tautannya, pengecualian yang menahan saya.
ubiquibacon
Tautan ini tampaknya telah mati.
JAD
10

Seperti yang dinyatakan sebelumnya, setel properti AcceptButton formulir Anda ke salah satu tombolnya DAN setel properti DialogResult untuk tombol itu ke DialogResult.OK , agar pemanggil mengetahui apakah dialog diterima atau ditutup.

Sorin Comanescu
sumber
6

Anda dapat berlangganan ke KeyUpacara TextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}
sanjeev
sumber
1
Hanya apa yang saya cari. Saya memiliki hasil dialograf tombol yang disetel ke OK dan tidak ingin menulis kode yang tidak perlu agar ENTER berfungsi!
Kristjan1215
2

Formulir memiliki properti KeyPreview yang dapat Anda gunakan untuk mencegah penekanan tombol.

itsmatt
sumber
1

Cukup gunakan

this.Form.DefaultButton = MyButton.UniqueID;  

** Letakkan id tombol Anda di tempat 'MyButton'.

Bino Kochumol Varghese
sumber
0

Setel atribut KeyPreview pada formulir Anda ke True, lalu gunakan acara KeyPress di tingkat formulir Anda untuk mendeteksi tombol Enter. Saat deteksi, panggil kode apa pun yang Anda miliki untuk tombol "kirim".

Tagihan
sumber
0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
BenW
sumber