2017-02-01 2 views
0

현재 프로젝트를 진행 중이고 키를 누를 때 기능을 트리거하는 창에 KeyEventHandler을 추가하려고합니다.C# 기능을 트리거하는 바로 가기 키 만들기

내 문제는 그러나입니다 나는이

testObject.KeyDown += new KeyEventHandler(doSomethingOnKeyPress);

private void doSomethingOnKeyPress(object sender, KeyEventArgs e)) 
{ 
    if (e.Control && e.KeyCode == Keys.R) 
    { 
    // do something 
    } 
} 

나는 프로그램이 Input.KeyEventHandlerForms.KeyEventHandler을 변환 할 수없는 오류가 발생 것 같은 핸들러를 추가 할 때.

누구든지이 문제에 대해 올바른 방향으로 안내 할 수 있습니까?

+0

원하는 무엇? 'doSomethingOnKeyPress'가 이벤트 핸들러 시그니처와 일치하면 생성자'+ = new KeyEventHandler (doSomethingOnKeyPress) '를 사용할 필요가 없습니다. 'testObject.KeyDown + = doSomethingOnKeyPress'가 작동합니다. –

+0

내가 사용하고있는 테스트 객체는 TextBox입니다. – chunath

답변

0

난 당신이 잘못된 네임 스페이스가

private void doSomethingOnKeyPress(object sender, Forms.KeyEventHandler e)) 

private void doSomethingOnKeyPress(object sender, KeyEventArgs e)) 

을 변경하거나

0

변경 네임 스페이스가 작동해야 사용하여 섹션으로 정리하려고 사용할 생각하지만, 나는이어야한다 생각 다른 방향으로, 즉

private void doSomethingOnKeyPress(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.R) 
    { 
    // do something 
    } 
} 
0

우연히 이벤트 KeyPress & KeyDown이 섞여 있습니다.

KeyPress & KeyDown은 두 가지 다른 이벤트이므로 서로 다른 이벤트 처리기가 있습니다.

KeyDown은 다음과 같아야합니다. testObject.KeyDown + = 새 KeyEventHandler (doSomethingOnKeyPress);

0
private void myClass(){ 
//doing something 
} 
private void button1_KeyDown(object sender, KeyEventArgs e) 
{ 
if(e.KeyCode == Keys.W){ 
myClass(); 
} 
} 
는 는

당신은 "W"예를 들어 당신은 D 메이크업 수 사용하거나 당신은 당신의 testObject이 어떤 유형