IT정보공유/C#

C# 단축키 사용을 위한 KeyPreview와 키조합 사용방법

알지오™ 2020. 4. 28.

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 를 & 연산해서 사용합니다.

댓글

💲 추천 글