[C#] Windows Forms Enter 키 이벤트

이번 시간에는 C#, Windows Forms 에서 Enter 키 이벤트를 처리하는 방법에 대해 안내해 드리려고 합니다. 이와 관련한 이벤트 중 하나가 키 코드인데요, 가끔 '엔터'나 '이스케이프'를 눌렀음에도 키 코드가 폼에 제대로 반영이 안 되는 것에 대해 문의하는 경우가 있습니다. 이를 위해 KeyPreview 속성에 대해 우선 알아보겠습니다.

KeyPreview

키 프리뷰는 키 이벤트를 받는 객체를 폼으로 할지, 선택한 컨트롤로 할지 설정하는 속성입니다. 기본값은 false입니다.

  • true : 폼이 모든 키 이벤트를 받는 경우
  • false : 현재 선택되어 있는 컨트롤이 키 이벤트를 받는 경우

폼의 KeyPreview 속성을 이용하여 폼에서 키 이벤트를 미리 확인할 수 있도록 하겠습니다. 다음의 코드와 같이 true 로 설정합니다.

this.KeyPreview = true;

Key Event Args

다음으로, switch 문을 사용하여 키 코드를 확인하고 Enter 및 Escape 키인 경우에 원하는 동작을 실행하도록 코드를 작성하겠습니다. 사용한 이벤트는 KeyDown 입니다.

private void KeyDownBeomSang(object sender, System.Windows.Forms.KeyEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Enter:
            btn.PerformClick();
            break;
        case Keys.Escape:
            Close();
            break;
        default:
            break;
    }
}

예제 코드에서는 Enter 키가 눌렸을 때 btn 버튼의 PerformClick 메서드를 호출하여 해당 버튼 이벤트를 진행하도록 하였습니다. 또한 Escape 키에 대해서는 폼을 닫도록 추가해 보았습니다.

이것으로 KeyPreview 와 Key Event 를 통해 Windows Forms 에서 Enter 및 Escape 와 같은 키를 처리할 수 있도록 해보았습니다~

댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗