2009-05-03 15 views
3

저는 여기 주위에 새로 왔으며 C# 응용 프로그램에 약간의 문제가 있습니다. 키 다운 이벤트를 캡처하고 싶습니다. 이것은 처음에는 문제가 아니었지만 폼에 일부 버튼을 추가 한 후에는 폼의 키 다운 이벤트가 화살표 키를 무시하고 한 버튼에서 다른 버튼으로 포커스를 이동합니다. (키 업 이벤트가 작동합니다) 이걸 멈추고 화살 열쇠를 쥐고있을 때 다른 일을하게하는 방법?버튼에 의해 영향을받는 키 다운 이벤트

+0

아래에서 편집을 확인하십시오. –

답변

5

양식의 KeyPreview 속성을 true로 설정하십시오. 그러면 폼이 자식 컨트롤과 함께 keydown 이벤트를 볼 수 있습니다.

당신은 당신이 각 컨트롤의 키 다운 이벤트를 설정해야합니다 컨트롤에 대한 기능을 일반 키를 누른하지 않으려면 ... 당신의 양식에

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData.Equals(Keys.Right)) 
    { 
     MessageBox.Show("Right Key Pressed!"); 
    } 

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

KeyPreview를 true로 설정했지만 화살표 키를 눌렀을 때 응답이 나타나지 않습니다. 다른 모든 키는 화살표를 제외하고 KeyDown 이벤트에서 작동하는 것 같습니다. – sheitan

+0

일반적인 Form Key * 이벤트는 제어 키를 사용할 수 없습니다. 대신 ProcessCmdKey를 대체해야합니다. –

+0

고맙습니다. 이것은 나를 많이 도왔습니다! :) – sheitan

1

을이를 추가하고 설정 이벤트 인수에 대해 처리 된 속성을 true로 설정하면 내장 된 제어 기능에 버블 링되지 않습니다.