티스토리 뷰

 

 

C#에 대해 공부하는 도중 윈폼에서 텍스트박스에 숫자입력만 받도록 하는법에 대해서 궁금했다.

출처 : http://geuny.tistory.com/25

 

-------------------------------------------------------------------------------------------------------------------------

private void price_box_KeyPress(object sender, KeyPressEventArgs e)                                  
        {                                                                                                                            
            if(!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))                  
            {                                                                                                                        
                e.Handled = true;                                                                                              
            }                                                                                                                         
        }                                                                                                                             

 

-------------------------------------------------------------------------------------------------------------------------

 

1. Keypress 이벤트에 대한 함수를 생성한다.

잠깐.. Keypress란 이벤트가 무얼까..

KeyUp(), KeyDown(), Keypress() 가 있는데.

KeyUP()은 키보드에서 손을 뗏을때..

KeyDown()과 Keypress()는 키보드를 눌렀을때 이벤트가 발생한다.

찾아본 설명으론 Down과 Press가 별다른 차이가 없지않나 생각했지만

Down은 누른후뗏을때이고. Press는 누르는 즉시가 차이점이라는 점에서

게임을 예로들어 한번 누르고 뗀거랑,길게 누르고있다가 뗏을 때랑의 차이점이 아닐까.

록맨같은 게임에서 한번누르면 점사(KeyPress).. 길게누르면 강하게(KeyDown) 나가는것처럼?

 

 

 

char.IsDigit(e.KeyChar)

텍스트박스에 입력한 문자가 10진수인지 아닌지를 체크하기위함이다.
숫자면 true를 반환하고. 이외는 false가 나옴.

e.KeyChar == Convert.ToChar(Keys.Back)
키입력을 받을때. 엄연히 백스페이스가 숫자가 아닌것으로 인식되기때문에

그에따른 키이벤트값의 예외처리를 해주어야. 숫자를 지울수 있다.

e.Handled = true

키보드를 눌렀을때에 대한 이벤트를 적용하지않고. 잡아낸다라고 생각하면 될 것같다.

정확하게는 모르겠지만. 이것에 사용용도로 제일 적당한게 어떤 행위가 이루어질필요가 없을때. 그것을 막는다..? 정도인것같다.

 

결론

keypress로 인한 키보드에서 입력받은 값을 입력하기전에. 10진수의 숫자형식이 아니면 bool형식의 false처리가 되어 e.Handled = true 로 인하여 키입력에 대한 실행을 막는다. e.KeyChar == Convert.ToChar(Keys.Back) 을 이용해서 백스페이스에대한 처리는 받아야하기때문에 그에따른 예외처리를 넣어준다.

'IT Skills > Programming' 카테고리의 다른 글

xml 메모  (1) 2016.06.22
어셈블리 개념 정리  (0) 2015.10.08
C# 인터페이스  (0) 2013.05.06
JAVA 전쟁 프로젝트  (0) 2013.05.06
C# -- 동물농장  (0) 2013.04.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함