Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

윈폼개발

닷넷을 기반으로 한 윈도우 응용프로그램 개발 지식을 다룹니다. 비지니스 응용프로그램을 위한 닷넷 윈폼 응용프로그램은 아주 강력합니다

[Key 반응] 폼(Form) 제어

작성자 : 박종명
최초 작성일 : 2008-06-26 (목요일)
최종 수정일 : 2008-06-26 (목요일)
조회 수 : 3611

윈도우 응용프로그램을 개발하다 보면 사용자와의 보다 편리한 상호작용을 위해 마우스가 아닌 키보드 입력 값에

대응하여 반응을 해야 할 경우가 많습니다

 

이번 글에서는 그 중에서도 윈도우 폼에서 아주 많이 사용되는 ‘Enter’ 키와 ‘Esc’ 키에 대한 반응 방법을 알아보도록 하겠습니다

 

1. Esc 로 폼(Form) 닫기

윈도우 폼이 Key에 반응하는 여러 이벤트 중 KeyDown 이벤트에 다음과 같이 Esc 키에 반응할 수 있다.

아래 샘플코드는 폼에서 KeyDown 이벤트를 받아서 ‘Esc’ 키가 눌러졌으면 폼을 닫는 코드이다

 

private void Form1_KeyDown(object sender, KeyEventArgs e)

{

       if (e.KeyCode == Keys.Escape)

       {

           this.Close();

       }

}

 

그러나 위의 코드는 폼에 TextBox 와 같은 포커스를 받는 다른 컨트롤이 있으면 이벤트를 받을 수 없다. 

TextBox 컨트롤이 사용자의 KeyDown 이벤트를 받기 때문이다. 아래의 UI 를 보자

 

  

포커스가 TextBox에 가 있으며 사용자의 KeyDown 이벤트도 이 TextBox 로 보내진다.

그렇다면 폼에 있는 모든 TextBox Button 에 똑같이 KeyDown 이벤트를 구독하게 하여 폼을 닫을 수 있긴 하지만 폼에 많은 컨트롤이 있을 경우 대단히 비 효율적인 코드가 될 것이다.

 

 

 

2. Form.KeyPreview 속성

 

폼에 포커스를 받는 많은 컨트롤이 있더라도 Key 와 관련된 이벤트를 폼이 먼저 받을 수 있도록 하는 속성이 바로 KeyPreview 속성이다. 이 속성의 값이 True 로 설정되면 다른 컨트롤이 Key 이벤트를 받기 전에 폼이 먼저 받을 수 있도록 한다.

 

 

 

3. Form.CancelButton 속성

 

보통 팝업 형태의 폼에서는 ‘확인’ 과 ‘취소’ 버턴이 존재하기 마련이다. 폼의 CancelButton 은 사용자의 ‘Esc’ 키에 반응하는 버턴을 설정하는 속성이다만일 ‘취소’ 버턴이 폼을 닫는 역할을 한다면 폼의 CancelButton 속성이 이 버턴을 지정하면 Esc’ 키가 눌러졌을 때 해당 버턴이 클릭되는 효과를 줄 수 있다.

 

   

3.1 Form.AcceptButton

 

CancelButton 이 ‘Esc’ 에 반응하는 버턴에 대한 설정이라면 AcceptButton 은 ‘Enter’ 키에 반응하는 버턴을 설정하는 속성이다. 즉 폼의 기본 단추를 설정하는 속성이다. 다시 아래의 UI 에서,

 

 

 

 

TextBox에 글을 입력하다 ‘Enter’ 키를 누르면 자동으로 ‘확인’ 버턴을 누른 효과를 주는 것이다.

이로써 사용자는 확인 버턴을 누를 필요없이 글 입력 도중 ‘Enter’ 키만 누르면 되게 되는 것이다

 

 

3.2 TextBox.AcceptsReturn

 

위의 UI 에서 두번째 TextBox Multiline 입력 박스이다.

보통 Multiline 입력박스에서 Enter’ 키는 다음줄로 이동하도록 해야 한다. 그런데 Form AcceptButton 이 ‘확인’버턴으로 설정되어 있으면 다음칸으로 이동하는 것이 아니라 폼의 기본단추인 ‘확인’ 버턴의 이벤트가 실행되어 버린다. 이런 경우를 위해 TextBox AcceptsReturn 이라는 속성을 노출한다.

TextBox 에서 ‘Enter  키가 눌러졌을 때 기본단추가 아닌 다음 줄로 이동시키기 위해서는
TextBox.AcceptsReturn = true 로 설정되어야 한다.

 

 

이름
비밀번호
홈페이지
XO <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요