ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C#] 텍스트박스에 숫자만 입력받도록 하기
    Programming/C# 2019. 3. 6. 11:54

    C# 에서 TextBox 에 숫자만 입력받는법을 공부했다.



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

     

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

     

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

    키입력 이벤트 는 주로

    KeyUP() , KeyDown(), Keypress() 세가지가 있다. 


    1. KeyUP() : 키보드에서 손을 땠을때.

    2. KeyDown() : 키보드에서 키를 누를때

    3. Keypress() : 키보드에서 길게 누르고 떗을때

    이정도 개념으로 알고 넘어가주면된다.

     

     

    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) 을 이용해서 백스페이스에대한 처리는 받아야하기때문에 그에따른 예외처리를 넣어준다.

Designed by Tistory.