저는 Windows Forms 프로젝트에서 한동안 작업 해 왔으며 키보드 단축키를 실험하기로 결정했습니다. 조금 읽은 후 이벤트 핸들러를 작성하고 폼의 KeyDown 이벤트에 바인딩해야한다고 생각했습니다.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Alt && e.KeyCode == Keys.O)
{
MessageBox.Show("Ctrl+Alt+O: magic!");
}
}
Visual Studio 디자이너의 속성 패널을 연 다음 양식의 KeyDown 이벤트를 두 번 클릭하여 Form1_KeyDown
이벤트 처리기 를 생성하는 좋은 방법을 사용했습니다 . 그러나 내 응용 프로그램을 테스트 할 때 양식이 Ctrl+ Alt+ O키보드 단축키에 전혀 응답하지 않습니다 . Visual Studio 디자이너는 이벤트 처리기를 폼에 바인딩하는 코드를 생성했습니다.
private void InitializeComponent()
{
// ...
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
// ...
}
그래서 나는 Console.WriteLine()
그것이 호출되고 있는지 확인하기 위해 핸들러에 호출을 추가하려고 시도 했지만 운이 없었습니다.
또한 이벤트 바인딩 호출 (위에 표시됨)에 중단 점을 설정하려고 시도했으며 프로그램이 해당 중단 점에 제대로 도달한다는 것을 발견했습니다. 그러나 메서드 정의 자체 내에서 설정 한 중단 점에는 도달하지 않습니다.
처음 몇 단계를 올바르게 수행했는지 확인하기 위해 다음과 같이 반복 해 보았습니다.
동일한 솔루션의 새로운 양식.
같은 문제 : Ctrl+ Alt+ O키보드 바로 가기를 누르면 양식이 응답하지 않고 디버거가 이벤트 처리기로 들어오지 않습니다.이것을 다시 시도하고 작동합니다.완전히 새로운 WinForms 솔루션.
완벽하게 작동합니다. 메시지 대화 상자가 나타납니다 (Console.WriteLine()
통화도 작동 함).
그래서 저는 여기서 길을 잃었습니다. 이 하나의 프로젝트에있는 모든 양식이 KeyDown 이벤트를받지 못하게하는 이유는 무엇입니까?