Windows Forms - Nhấn phím Enter kích hoạt nút gửi?


95

Làm cách nào tôi có thể ghi lại các lần nhấn phím enter ở bất kỳ đâu trên biểu mẫu của tôi và buộc nó kích hoạt sự kiện nút gửi?


8
Vậy tại sao bạn không nhấn thuộc tính AcceptButton trên câu trả lời của Matt Hamilton?
Mukus

sử dụng 'this.Form.DefaultButton = MyButton.UniqueID;'
Bino Kochumol Varghese

Câu trả lời:


196

Nếu bạn thiết lập Form's AcceptButtontài sản cho một trong những Buttons trên Form, bạn sẽ nhận được rằng hành vi theo mặc định.

Nếu không, hãy đặt thuộc KeyPreviewtính truetrên Formvà xử lý KeyDownsự kiện của nó . Bạn có thể kiểm tra Enterkhóa và thực hiện hành động cần thiết.


8
và đừng quên về CancelButton để xử lý thoát bấm phím
WholeLifeLearner

1
Tuyệt vời! Tôi cần biết rõ hơn về Framewrok của mình;)
Jack

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

22

Bạn có thể chỉ định một nút làm "AcceptButton" trong thuộc tính của Biểu mẫu và nút đó sẽ bắt bất kỳ lần nhấn phím "Enter" nào trên biểu mẫu và định tuyến chúng đến điều khiển đó.

Xem Cách thực hiện: Chỉ định Nút Biểu mẫu Windows làm Nút Chấp nhận Sử dụng Trình thiết kế và lưu ý một số ngoại lệ mà nó nêu ra (hộp văn bản nhiều dòng, v.v.)


Cảm ơn vì liên kết, những trường hợp ngoại lệ giữ tôi lên.
ubiquibacon

Liên kết này dường như đã chết.
JAD

10

Như đã nêu trước đó, hãy đặt thuộc tính AcceptButton của biểu mẫu của bạn thành một trong các nút của nó VÀ đặt thuộc tính DialogResult cho nút đó thành DialogResult.OK , để người gọi biết hộp thoại được chấp nhận hay bị loại bỏ.


6

Bạn có thể đăng ký KeyUpsự kiện của TextBox.

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

1
Chỉ cần những gì tôi đang tìm kiếm. Tôi đã đặt kết quả hộp thoại nút thành OK và không muốn viết mã không cần thiết để ENTER hoạt động!
Kristjan1215

2

Biểu mẫu có thuộc tính KeyPreview mà bạn có thể sử dụng để chặn việc nhấn phím.


1

Đơn giản chỉ cần sử dụng

this.Form.DefaultButton = MyButton.UniqueID;  

** Đặt id nút của bạn thay cho 'MyButton'.


0

Đặt thuộc tính KeyPreview trên biểu mẫu của bạn thành True, sau đó sử dụng sự kiện KeyPress ở cấp biểu mẫu của bạn để phát hiện phím Enter. Khi phát hiện, hãy gọi bất kỳ mã nào bạn có cho nút "gửi".


0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.