C# 폼에서 단축키를 사용하고자 할 때는 Form 속성중에
KeyPreview 속성을 true로 설정해 줘야 합니다.
TextBox 등의 컨트롤에 KeyDown 이벤트를 걸수 있지만, 컨트롤이 아닌 전체 폼 어디에서든
KeyDown 이벤트를 받기위한 설정입니다.
폼 단축키 사용 속성 - KeyPreview
Frm.KeyPreview = true;
그리고 폼 KeyDown 이벤트 핸들러를 만들어주고 KeyEventArgs의 키코드값이
원하는 키 일때, 처리하는 프로세스를 추가 해주면 됩니다.
스페이스바를 눌렀을 때는 Delete() 함수를 호출하고,
쉬프트키 + 스페이스바키를 눌렀을 경우에는 MoveNext() 함수를 호출하는 기능입니다.
private void Frm_KeyDown(object sender, KeyEventArgs e)
{
if ((e.Modifiers & Keys.Shift) == Keys.Shift && e.KeyCode == Keys.Space)
{
MoveNext();
e.SuppressKeyPress = true;
}
else if (e.KeyCode == Keys.Space)
{
Delete();
e.SuppressKeyPress = true;
}
}
여기서 중요한게 KeyEventArgs.SuppressKeyPress 속성을 true로 지정한 것을 보실 수 있을 텐데요.
KeyEventArgs.SuppressKeyPress 를 true로 지정하지 않을 경우에는
포커스가 있던 컨트롤, 예를들어 텍스트박스 같은 에디터 컨트롤에게도 KeyDown 이벤트가 전달되게 됩니다.
이벤트가 컨트롤로 전달되지 않도록 막는 속성이라고 보시면 됩니다.
키 조합은 KeyEventArgs.Modifiers 와 KeyCode 를 & 연산해서 사용합니다.
댓글