Tôi đã thử sử dụng các sự kiện KeyUp và KeyDown để đọc đầu vào bàn phím nhưng ngay sau khi tôi đặt các điều khiển khác trên Winform, các phím không được đọc. Làm cách nào để đảm bảo rằng các phím được đọc?Làm cách nào để đọc đầu vào bàn phím trên Winform?
Trả lời
Bạn có thể đặt KeyPreview = true
trên biểu mẫu của mình để nắm bắt các sự kiện bàn phím.
EDITED để cho bạn hiểu:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
e.SuppressKeyPress = true;
}
mẫu ngốc tiếp nhận các sự kiện bàn phím và thả nếu A được nhấn.
Nếu tiêu điểm nằm trong hộp văn bản, bạn sẽ thấy văn bản đó được viết chứ không phải A !!
CHỈNH SỬA LẠI: Tôi lấy mã này từ ví dụ VB.NET.
Trong điều khiển người dùng của bạn, hãy sử dụng sự kiện "Nhấn phím" của hộp văn bản để tăng "sự kiện điều khiển người dùng".
Mã này sẽ là trong usercontrol tuỳ chỉnh của bạn:
'Declare the event
Event KeyPress(KeyAscii As Integer)
Private Sub Text1_KeyPress(KeyAscii As Integer)
RaiseEvent KeyPress(KeyAscii)
End Sub
Điều này không hiệu quả, tôi vẫn không đăng ký bất kỳ đầu vào nào. – Bildsoe
@Bildsoe: Tôi đã thử và nó hoạt động. Bạn nên nắm bắt các sự kiện 'KeyDown' và' KeyUp' trên biểu mẫu: bạn sẽ nhận được chúng, hãy chắc chắn. Nếu không đăng mã của bạn xin vui lòng, vì có gì đó sai ... – Marco
ok cảm ơn, tôi sẽ cố gắng hơn, tôi phải làm điều gì sai. Tôi có một điều khiển người dùng trên biểu mẫu của tôi, điều này có thay đổi gì không? – Bildsoe
Xem: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx
thiết KeyPreview = true
và KeyUp
của bạn và KeyDown
sẽ nhận ra tất cả các đầu vào bàn phím.
Vì marco nói hãy đặt KeyPreview thành true trên biểu mẫu của bạn để nắm bắt các sự kiện chính trong toàn bộ biểu mẫu thay vì chỉ là điều khiển.
Sử dụng sự kiện KeyPress ... KeyUp/Down dành cho khung công tác nhiều hơn mã của bạn. KeyDown là tốt nếu bạn muốn vô hiệu hóa một phím ... trường số duy nhất vv Nói chung KeyPress là một trong những bạn đang sau.
Nếu bạn muốn ngăn chặn các thao tác gõ từ việc đẩy lùi đến các điều khiển khác, hãy đặt KeyPressEventArgs.Handled = true.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=VS.90).aspx
Bạn đã kết nối trình xử lý sự kiện chưa?
MyForm.KeyDown += MyHandler;
Bạn cũng có thể làm điều này trong các thuộc tính pane ... nhấp vào biểu tượng sự kiện ...
Tôi cần cả lên và xuống. Tôi muốn hình dung các phím được nhấn, do đó, một cái gì đó cần phải xảy ra cả trên keyUp và keyDown. – Bildsoe
Tôi hiểu rồi ... KeyUp/Down sẽ hoạt động giống như vậy. Bạn đã kết nối các trình xử lý sự kiện chưa? Hoặc trong ngăn thuộc tính trong phần sự kiện hoặc trong mã? MyForm.KeyDown + = MyEventHandler; – iDevForFun
Có, tôi đã kết nối bộ xử lý sự kiện. Nó hoạt động, nhưng không phải nếu tôi đặt một điều khiển người dùng trên biểu mẫu thì nó ngừng hoạt động. – Bildsoe
Nếu bạn đang tìm kiếm mẫu của bạn thân để đọc các đầu vào bàn phím, bạn đã có câu trả lời của bạn từ các phóng viên khác. Tôi đang thêm đóng góp này cho khả năng bạn có thể muốn thêm xử lý khóa vào các điều khiển khác hoặc các điều khiển người dùng trên biểu mẫu của bạn. Bài viết của tôi Exploring Secrets of .NET Keystroke Handling được xuất bản trên DevX.com (than ôi, nó yêu cầu đăng ký nhưng miễn phí) cung cấp cho bạn một cuộc thảo luận toàn diện về cách thức và lý do tại sao tất cả các móc khóa và sự kiện quan trọng khác nhau được phát huy. Hơn nữa, bài viết bao gồm một tiện ích "Keystroke Sandbox" để tải xuống miễn phí thực sự cho phép bạn xem các điều khiển nào đang nhận các sự kiện xử lý khóa nào.
Dưới đây là một trong những minh họa từ bài viết để kích thích sự thèm ăn của bạn:
- 1. Làm thế nào để sử dụng select() để đọc đầu vào từ bàn phím trong C
- 2. C# Gửi đầu vào bàn phím
- 3. Làm cách nào để loại bỏ bàn phím trên UIWebView?
- 4. Làm cách nào để chặn đầu vào bàn phím và chuột trong C#?
- 5. Thanh trượt jQuery-UI - cách tắt đầu vào bàn phím?
- 6. Cách thêm chế độ xem trên đầu bàn phím?
- 7. cách truyền đầu vào bàn phím cùng với lệnh linux?
- 8. Làm cách nào để thêm từ vào đề xuất trên bàn phím mềm
- 9. AS3: Làm thế nào để có được đầu vào toàn màn hình và bàn phím?
- 10. Làm cách nào để đọc la bàn trên Android?
- 11. Làm cách nào để đọc lối tắt bàn phím tùy chỉnh từ người dùng trong WPF?
- 12. Ngăn Google Maps đánh cắp đầu vào bàn phím
- 13. Làm thế nào để có được đầu vào bàn phím trong pygame?
- 14. Làm cách nào để có một UIWebView tập trung vào đầu vào biểu mẫu và hiển thị bàn phím?
- 15. Cách tốt nhất để xử lý đầu vào từ bàn phím "nêm"
- 16. Làm thế nào để đọc các mã khóa của Bàn phím USB với Phím Phương tiện
- 17. Làm thế nào để mô phỏng đầu vào bàn phím trong TẤT CẢ các ứng dụng?
- 18. Làm thế nào để có được đầu vào bàn phím trực tiếp trong C + +?
- 19. Java nhận đầu vào từ bàn phím MIDI
- 20. Làm thế nào để có được đầu vào từ bàn phím trong khi làm những việc khác cùng một lúc?
- 21. Xử lý đầu vào bàn phím hiệu quả
- 22. Trapping đầu vào bàn phím thứ hai trong (ubuntu) linux
- 23. Java: Xử lý kết hợp bàn phím đầu vào
- 24. Gửi bàn phím Đầu vào tới VMWare từ C#
- 25. Làm cách nào để phát hiện bàn phím libgdx
- 26. Làm thế nào để thay đổi màu nền của bàn phím cho bàn phím mềm Android?
- 27. Làm cách nào để tôi có thể bật hoặc tắt phím Quay lại theo cách thủ công trên bàn phím?
- 28. Bàn phím đa nền tảng/đầu vào chuột khuyến nghị
- 29. Làm cách nào để buộc bàn phím hiển thị/ẩn?
- 30. Làm cách nào để ghi đè ngắt bàn phím? (Python)
Ý của bạn là nó hoạt động cho các hình thức trống và không làm việc nếu có một kiểm soát? – Yuan
Có, như được viết trong các câu trả lời bên dưới, nó hoạt động cho các nút điều khiển như nút, hộp văn bản, v.v. nhưng khi tôi đặt Điều khiển người dùng, nó sẽ ngừng hoạt động. – Bildsoe
Nó không phải là công việc, đầu vào bàn phím đi đến sự kiểm soát với tiêu điểm. Bạn đang thực sự * cố gắng làm gì? –