2011-02-08 7 views
0

키 입력을 어떻게 받아들입니까? 예를 들어, 사용자가 q을 누르면 응용 프로그램을 종료하고 싶습니다.WinForms 앱에서 키 스트로크를 어떻게 받아 들일 수 있습니까?

어떻게해야합니까? WinForms를 사용하고 있습니다.

+5

WinForms, WPF, ASP.NET, ....? –

+0

가능한 중복 [winforms에서 키보드 바로 가기를 구현하는 가장 좋은 방법은?] (http://stackoverflow.com/questions/400113/best-way-to-implement-keyboard-shortcuts-in-winforms) –

답변

2

WinForms을 사용하는 경우 KeyDown 또는 KeyUp 이벤트를 사용하십시오.

protected override void OnKeyUp(KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Q) 
    { 
     this.Close(); 
    } 

    base.OnKeyUp(e); 
} 
+0

반드시해야합니까? 행사 거래 ?? 내가하려는 유일한 일은 사용자가 특정 키를 누를 때 나가는 것입니다. – olive

+1

@user : 예, 이벤트를 처리해야합니다. * WinForms에서하는 모든 작업은 이벤트를 처리합니다. Windows는 이벤트 중심 환경입니다. 왜 처음부터 이벤트를 피하고 싶은지 잘 모르겠지만이를 수행하는 코드는 복잡하지 않습니다. –

+0

좋은 'Q'키를 어떻게 얻었습니까? –

1

당신이 만들고있는 응용 프로그램의 어떤 종류 : 사용자가 키 Q를 누를 때마다

예를 들어, 단지 OnKeyUp 이벤트를 무시하고 닫 폼 클래스에 다음 코드를 드롭? 창 양식? WPF? 콘솔? 처음 두 개에는 키 누름과 관련된 이벤트가 있고 세 번째에는 Console.Read 또는 ReadLine 메서드를 사용하고 반환 값을 테스트 할 수 있습니다.

+0

Windows 양식 작업 중입니다. – olive

0

여기에 KeyPreview 및 OnKeyPreview를 사용할 수 있습니다 양식에 사용하고 있습니까? 가끔 KeyDown 및 KeyUp이 처리되기 전에 처리됩니다.

현재 Windows 응용 프로그램의 경우 'Q'키를 사용하여 종료하는 수정자를 사용하지 않는 것이 좋습니다. 입력을 허용하는 양식에 텍스트 상자가있을 수 있으며 누군가가 'quebec '을 입력하십시오.

이벤트를 사용하지 않으려면 같은 가상 메서드를 무시하고 원하는대로 수행 할 구현을 제공하십시오. 그러나 여기서도 선호되는 방법은 이벤트입니다.

+0

왜 이렇게하는 것이 바람직한 방법은 이벤트를 처리하는 것이고 적절한 방법을 재정의하는 것입니까? 컨트롤은 실제로 자체 이벤트를 처리해서는 안됩니다. 이는 객체 지향 디자인의 대부분의 규칙을 위반하며 나중에 누군가가 그 컨트롤을 서브 클래스 화하기로 결정할 경우 모든 종류의 혼란과 예상치 못한 동작을 유발할 수 있습니다. –

+0

질문은 아마도 (아마도) 닫힐 양식을 만드는 것에 관한 것이므로 컨트롤이 아닌 폼에 대해 이야기하고있었습니다. –

관련 문제