Tôi đã làm việc một thời gian trong dự án Windows Forms của mình và tôi quyết định thử nghiệm với các phím tắt. Sau khi đọc một chút, tôi nghĩ mình phải viết một trình xử lý sự kiện và liên kết nó với sự kiện KeyDown của biểu mẫu:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Alt && e.KeyCode == Keys.O)
{
MessageBox.Show("Ctrl+Alt+O: magic!");
}
}
Tôi đã làm điều đó theo cách tốt là mở bảng Thuộc tính của trình thiết kế Visual Studio, sau đó nhấp đúp vào sự kiện KeyDown của biểu mẫu của tôi để tạo Form1_KeyDown
trình xử lý sự kiện. Nhưng khi kiểm tra ứng dụng của tôi, biểu mẫu hoàn toàn không phản hồi với phím tắt Ctrl+ Alt+ O. Tuy nhiên, nhà thiết kế Visual Studio đã tạo mã để liên kết trình xử lý sự kiện với biểu mẫu:
private void InitializeComponent()
{
// ...
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
// ...
}
Vì vậy, tôi đã thử thêm một Console.WriteLine()
cuộc gọi vào trình xử lý để kiểm tra xem nó có đang được gọi hay không, nhưng cũng không may mắn.
Ngoài ra, tôi đã cố gắng thiết lập một điểm ngắt trên lệnh gọi ràng buộc sự kiện (được hiển thị ngay bên trên) và thấy rằng chương trình đạt đến điểm ngắt đó tốt. Nhưng bất kỳ điểm ngắt nào tôi đặt trong bản thân định nghĩa phương pháp đều không bao giờ đạt được.
Để đảm bảo rằng tôi đã thực hiện đúng một số bước đầu tiên, tôi đã thử lặp lại chúng với:
Một hình thức mới trong cùng một giải pháp.
Cùng một vấn đề: hình thức không trả lời khi tôi bấm của tôi Ctrl+ Alt+ Ophím tắt và trình gỡ lỗi thậm chí không được bước vào xử lý sự kiện.Đã thử điều này một lần nữa và nó hoạt động.Một giải pháp WinForms hoàn toàn mới.
Nó hoạt động hoàn hảo: hộp thoại thông báo xuất hiện (Console.WriteLine()
cuộc gọi cũng hoạt động).
Vì vậy tôi khá lạc lõng ở đây. Điều gì ngăn tất cả các biểu mẫu trong một dự án này nhận các sự kiện KeyDown?