본문 바로가기

Programing/닷넷

윈폼::ESC를 눌러 닫기

CreateDialog API함수를 이용해서 띄운 윈도우 폼에서는 기본적으로 ESC를 누르면 창이 닫힌다.

하지만 윈폼에서 만든 다이얼로그는 닫히지 않는다.


닫히게 하기 위해서 할 일은...

1. 폼의 프로퍼티중 KeyPreview = true로 변경(기본값: false)


2. KeyDown이나 KeyPress 이벤트 핸들러를 작성
 KeyDown이라면...

private void Form_KeyDown(object sender, KeyEventArgs e)

{

    if (e.KeyCode == Keys.Escape)

    {

        this.Close();

    }

}

 KeyPress라면..

private void Form_KeyPress(object sender, KeyPressEventArgs e)

{

    const char ESC_KEY = (char)Keys.Escape;

 

    if (e.KeyChar == ESC_KEY)

    {

        this.Close();

    }

}


KeyPress에서는 KeyChar라는 프로퍼티타입이 char이기 때문에, char타입의 상수로 정의해서 사용을 했다.
닷넷에 미리 정의된 Keys라는 열거타입은 ASCII의 제어문자 27과 동일하다.


두 개의 핸들러가 동시에 정의 되어 있으면 KeyDown이 KeyPress보다 호출이 되는 것을 확인했다.


참고: How to make a form close when pressing the escape key?

'Programing > 닷넷' 카테고리의 다른 글

[C#] DateTime.Now 분석  (0) 2013.11.28
[ASP.net] MVC 2  (0) 2013.01.28
애플리케이션 설정(app.config)  (0) 2013.01.10
ObjectDumper  (0) 2013.01.10
Microsoft Chart Controls (차트컨트롤)  (0) 2013.01.10