2011-04-21 2 views
1

양식을 받았는데 KeyUp 이벤트를 구독하고 Alt 키를 처리하는 중입니다. 양식에 포커스가있는 경우에만 내 양식에 포커스가있는 경우에만 효과가 있습니다. 그러면 더 이상 작동하지 않습니다. 컨트롤에 포커스가있을 때 키를 캡처하는 데 사용할 수있는 것은 무엇입니까? 차라리 모든 KeyUp 이벤트를 양식 컨트롤에 등록 할 필요가 없습니다.WinForms - 제어하기 전에 키 캡처

감사합니다.

답변

4

당신을위한 진정한 작업 폼의 KeyPreview 속성을 설정 것인가?

+0

예, KeyPreview 속성이 항상 유용했습니다. http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx –

+0

감사합니다. KeyPreview는 대우를받습니다. :) – R4D4

2

양식에서 ProcessCmdKey을 재정의하십시오. 이것은 폼이 활성화되어있는 한 포커스가있는 컨트롤에 관계없이 발생합니다. keydata를 확인하기 위해 조금 더 많은 작업을해야합니다. 예 :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if ((keyData & Keys.Alt) == Keys.Alt) 
     { 
      Debug.WriteLine("ALT"); 
     } 

     return base.ProcessCmdKey(ref msg, keyData); 
    } 
+0

일부 화살표 키가 통과하지 못하도록 막으려 고했지만 ProcessCmdKey를 무시하면 답이 나왔습니다. 감사! –