본문 바로가기
개발언어/C#

[C#] ESC로 창닫기

by 창용이랑 2020. 12. 18.
728x90

특정 키를 눌러서 이벤트를 발생시킬때 Form의 이벤트에서 KeyDown을 찾아서

 private void Form_KeyDown(object sender, KeyEventArgs e)
 {
         if(e.KeyCode == Keys.Escape)
         {
             this.Close();
         }
 }

 

이러한 코드를 작성하면 될것이라는 생각을 하기 쉽습니다.

 

하지만 이코드는 원하는대로 작동하지 않습니다.

 

우리가 원하는대로 작동하게 하려면 해당 폼의 클래스에서 ProcessCmdKey를 오버라이딩 해야합니다.

 

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
      if(keyData == Keys.Escape)
      {
           this.Close();
           return true;
      }
      
      return base.ProcessCmdKey(ref msg, keyData);
}



위와 같이 작성하고 ESC를 눌러보면 폼이 닫히는것을 볼수 있습니다.

 

확장(참고)

[C# 윈폼] 단축키 핫키 Hot Key 지정과 윈도우 전역 핫키 단축키 지정
출처: https://derveljunit.tistory.com/283 [Derveljun's Programming Log]