Programming/C#

[펌] 입력 문자 검사

blueasa 2011. 9. 14. 10:44

입력 문자 검사
프로그램을 작성하다 보면 사용자의 키보드 입력 문자를 검사해서 유용한 문자만을 허용하는 경우가 많이 있습니다.입력 문자열을 검증하는 방법 두 가지를 알아 보겠습니다
(아래 모든 코드는 TextBox KeyPress 이벤트에 정의된다고 가정한다)

1. Char 
구조체를 사용한 문자 검증 방법
Char 구조체의 static 메서드를 이용하여 입력문자를 검증할 수 있다
아래 표는 문자열을 검증하는 메서드의 표이다



     
 

예제> 몇 가지 예를 살펴보면..
a. 
숫자만 허용
if(!(Char.IsDigit(e.KeyChar)) && e.KeyChar != 8){

             e.Handled = true;

}

b. 
문자만 허용
if(! ((e.KeyChar >= 65 && e.KeyChar <= 90) ||  (e.KeyChar >= 97 && e.KeyChar <= 122))

&& e.KeyChar != 8) {

             e.Handled = true;

}

c. 
한글만 허용
if ((Char.IsPunctuation(e.KeyChar) || Char.IsDigit(e.KeyChar) ||

                           Char.IsLetter(e.KeyChar) || Char.IsSymbol(e.KeyChar))

                           && e.KeyChar != 8)

{

             e.Handled = true;

}


설명>>
TextBox KeyPress 이벤트에서 사용자의 입력값을 받아서 Char 구조체가 제공하는 메서드를 사용해서 문자 검증을

수행한다. 입력을 불허해야 하는 상황이라면 KeyPressEventArgs  Handled 속성을 true 로 설정하여 TextBox KeyPress 이벤트를 취소 시킨다 (, TextBox 에 글이 적히지 않도록 한다)
e.KeyChar != 8  이부분은 빽스페이스 키가 아니면 참이라는 것인데 즉 이말은 빽스페이스 키는 검증대상에 포함시키지 않는다는 의미가 된다

 


2. 사용자가 입력한 char를 자체를 검증하는 방법
위의 예제를 보면 알 수 있듯이 KeyPressEventArgs  KeyChar 는 현재 입력한 char를 의미한다.  char 의 범위나

키 자체의 단일 정수값을 이용해 입력 값을 검증할 수 있다. 아래 표는 각 키의 값을 나타내는 표이다


             
  
예제> 위에서 살펴본 문자열만 입력 허용하는 것을 아래와 같이 할 수도 있다

 
if(! ((e.KeyChar >= 65 && e.KeyChar <= 90) ||  
      (e.KeyChar >= 97 && e.KeyChar <= 122))

&& e.KeyChar != 8)

{

             e.Handled = true;

}  

 


정리>> 자주 쓰이는 부분만 따로 정리해 보면…


8 : 백 스페이스

32 : 스페이스

13 : 엔터

16 : Shift

17 , 18 : Ctrl , Alt

20 : Caps Lock

27 : ESC

                                                                                             

45 , 46 : Insert , Delete

                                                        

48 ~ 57 : 숫자(0 ~ 9)                                   

65 ~ 90 : A ~ Z

97 ~ 122 : a ~ z

                                                       

112 ~ 123 : F1 ~ F12

144 : Num Lock

 



출처 : http://www.mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=23&ID=272
반응형