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
|