이번 시간에는 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 와 같은 키를 처리할 수 있도록 해보았습니다~