2017-04-06 1 views
1

키보드의 왼쪽 및 오른쪽 버튼을 사용하여 함수를 호출하려고하지만 올바른 방법을 알지 못합니다.왼쪽/오른쪽 키보드 버튼 사용

이 시도의 결과로 왼쪽/오른쪽 키보드 키를 누르면 일반적인 방법으로 GUI 요소가 전환되고 주어진 기능에는 작동하지 않습니다. 여기에 무엇이 잘못되었는지 확실하지 않습니다.

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Right) 
     { 
      func1(); 
     } 
     else if (e.KeyCode == Keys.Left) 
     { 
      func2(); 
     } 
    } 
+2

양식에서 KeyPreview를 사용 설정 했습니까? – Equalsk

+2

이벤트를 처리하지 않았기 때문에 그럴 것 같습니다. 디버깅 중에 중단 점이 발생합니까? 제 생각에 [keyprieview 속성] (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview (v = vs.110) .aspx)이 당신이 원하는 것입니다. – Reniuz

답변

2

일부 의견에서 언급 한대로 keypreview를 활성화하는 대신 ProcessCmdKey 메서드를 무시하는 방법이있다.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Right) 
    { 
     func1(); 
     return true; 
    } 
    else if (keyData == Keys.Left) 
    { 
     func2(); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

자세한 내용은 this MSDN article을 참조하십시오.

+0

이것은 정답 인 것 같습니다. 'KeyPreview'를'true'로 설정하는 것이 항상 충분하지는 않습니다.'Form'의'KeyDown' 핸들러는 예를 들어, '버튼'이 초점을 맞 춥니 다. 'ProcessCmdKey'가 항상 호출됩니다. –

1

코드가 올바로 작동하면 미리 아무 것도 누르지 않아도됩니다. 나는 당신이 일반적인 keydown을 찾고 있다고 생각한다. here