Có cách nào để khởi động phương thức trong C# nếu nhấn một phím? Ví dụ: Esc?Bấm phím Escape để gọi phương thức
Trả lời
Tôi đang viết ứng dụng WinForms. Người dùng điền vào hộp văn bản và nếu ông muốn xóa tất cả mọi thứ, anh chỉ cần nhấp chuột esc trên bàn phím
Tôi nghĩ rằng bạn cần phải xử lý the KeyDown event.
Bạn cũng sẽ muốn đặt thuộc tính biểu mẫu 'KeyPreview' thành ** True ** để nắm bắt các sự kiện KeyPress – whiteshooz
Bạn đang viết ứng dụng Bảng điều khiển, ứng dụng WinForms hay cái gì khác? Có phải bạn đang cố gắng giữ phím ESC mọi lúc (bất kể cửa sổ/ứng dụng tập trung) hay cái gì khác?
Cần thêm ngữ cảnh.
Nếu bạn đang viết một ứng dụng Console, sau đó bạn nên bắt đầu xem xét những thứ như Console.ReadKey ...
http://msdn.microsoft.com/en-us/library/system.console.readkey.aspx
Tôi đang viết ứng dụng WinForms. Người dùng điền vào hộp văn bản và nếu anh ta muốn xóa tất cả mọi thứ, anh ta chỉ cần bấm phím esc trên bàn phím – raimis
sử dụng tổ chức sự kiện OnKeyPress của textbox của bạn và trong trường hợp
if(e.KeyCode==Keys.Escape)
{
yourTextBox.Text = string.Empty;
}
vui, điều này dường như không hoạt động chút nào, và nó có năm phiếu bầu? 'private void Form1_KeyDown (đối tượng người gửi, KeyEventArgs e) { nếu (e.KeyCode == Keys.Escape) {...' Tác phẩm này. Nhưng e.KeyChar là một kiểu ký tự, Keys.Escape không phải là và toán tử == không thể được áp dụng. –
@MasterPeter thực sự, đó là Mã khóa ... – Gregoire
để làm việc mã này cần phải Form.KeyPreview = true; –
Như những người khác đã đề cập, xử lý sự kiện KeyDown
hoặc KeyUp
của điều khiển thích hợp. Sự kiện này KeyPress
sẽ làm việc cho phím thoát là tốt, mặc dù nó sẽ không kích hoạt cho một số phím, chẳng hạn như phím Shift, Ctrl hay Alt.
Nếu bạn muốn thực thi chức năng này bất cứ khi nào người dùng nhấn phím Escape, thì có thể bạn muốn xử lý sự kiện trên Biểu mẫu. Nếu bạn làm điều này, bạn có thể cũng muốn đặt thuộc tính của Form là KeyPreview
thành true. Điều này sẽ cho phép điều khiển Biểu mẫu nhận sự kiện ngay cả khi tiêu điểm hiện nằm trong một trong các điều khiển con.
Nếu bạn muốn hành vi cụ thể cho điều khiển, chẳng hạn như xóa văn bản trong hộp văn bản hiện có tiêu điểm, bạn nên xử lý sự kiện KeyDown
hoặc KeyUp
của điều khiển TextBox
. Bằng cách này, trình xử lý sự kiện của bạn sẽ không được kích hoạt nếu người dùng nhấn phím thoát bên ngoài hộp văn bản.
Trong một số trường hợp, bạn có thể muốn ngăn điều khiển con xử lý cùng sự kiện mà bạn vừa xử lý. Bạn có thể sử dụng SuppressKeyPress
tài sản trên lớp KeyEventArgs
để kiểm soát hành vi này:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
MessageBox.Show("Escape key pressed");
// prevent child controls from handling this event as well
e.SuppressKeyPress = true;
}
}
Cảm ơn gợi ý hữu ích cho KeyPreview! – Peopleware
Bạn cần phải chuyển đổi hình thức sở hữu "KeyPreview" true hoặc các sự kiện của bạn sẽ không bị sa thải. Việc xử lý những sự kiện này một mình sẽ không làm bất cứ điều gì mặc dù các sự kiện là chính xác. Nó sẽ xem xét cho bạn như không có gì thực sự xảy ra ngay cả khi bạn đã đăng ký xử lý sự kiện thích hợp.
Với tổ chức sự kiện KeyPress ...
//Escape
if (e.KeyChar == '')
{
this.DialogResult = DialogResult.Cancel;
e.Handled = true;
}
'(char) Keys.Escape' giống với' '\ x1B'' giống với '(char) 27' nhưng ** không giống với **'' '' – xmojmr
Bạn cũng có thể sử dụng sự kiện KeyUp. Tôi thích nó.
private void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) {
if (e.Key == Key.Escape) {
//WHAT WILL HAPPEN INSERT HERE
}
}
đầu tiên trong Thuộc tính làm> KeyPreview: True
Sau đó:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
//call your method here
}
}
Trong trường hợp ai đó đang tìm kiếm cách để làm điều đó trong một ứng dụng console
if (Console.ReadKey().Key == ConsoleKey.Escape)
{
return;
}
- 1. Android - Nhận bấm phím trên bàn phím
- 2. Phím tắt AspectJ để gọi phương thức theo các phương thức cụ thể
- 3. Gọi hàm javascript sau 5 giây bấm phím cuối cùng
- 4. Gọi phương thức NSTimer
- 5. Bấm một phím với Java
- 6. Bắt phím bấm với android
- 7. Phím chủ hành vi bấm
- 8. Tại sao biên dịch C# gọi phương thức sản để gọi phương thức BaseClass trong IL
- 9. Android mô phỏng bấm phím
- 10. Làm thế nào để gọi phương thức didSelectRowAtIndexPath với UITapGestureRecognizer?
- 11. Gọi phương thức siêu siêu gọi
- 12. Gọi phương thức lớp riêng từ phương thức cá nhân
- 13. Phương thức gọi là đóng
- 14. Làm thế nào để ngăn chặn đóng hộp thoại MFC trên các phím Enter và Escape?
- 15. Phương thức gọi từ BackgroundWorker
- 16. Phương thức gọi bên trong phương thức khác trong javascript?
- 17. JNI, gọi phương thức boolean
- 18. Phân biệt giữa phím bấm và phím được giữ
- 19. Làm cách nào để phát hiện phím bấm thoát bằng JS hoặc jQuery thuần túy?
- 20. Cách kích hoạt phím bấm enter
- 21. Kết hợp phím bấm xử lý jQuery
- 22. Mô phỏng bấm phím với jQuery
- 23. Cách chụp phím bấm Enter trong GtkEntry
- 24. JSF gọi phương thức sao lưu bean và các thành phần reRender trên phím ENTER
- 25. Kết hợp bấm phím và khóa - jQuery
- 26. Làm thế nào để kết hợp chức năng bấm phím và bấm vào trong JavaScript?
- 27. jQuery: cách chụp phím bấm bằng live()
- 28. Liên kết phím bấm JQuery Esc
- 29. Làm thế nào để chụp phím bấm xóa trong C#?
- 30. Đợi bấm phím (hoặc) N giây để hết hạn
sử dụng cái gì? Console? Hình thức? ASP.NET? – Gregoire
Tôi đang sử dụng biểu mẫu – raimis
Lưu ý rằng nếu biểu mẫu của bạn có cấu hình ['CancelButton'] (http://msdn.microsoft.com/library/system.windows.forms.form.cancelbutton.aspx), sau đó nhấn ** ESC ** sẽ tự động nhấp vào nút này. Tùy thuộc vào yêu cầu của bạn, đây có thể là một cách tiếp cận tốt. –