programing/C#

[C#]TextBox에 숫자만 입력받기

쪽제비 2016. 8. 30. 10:56

int 형 정수만 입력을 받아야 하는 일이 생겼다.

만약에 입력을 다 받은 후 검사를 하려면 소스코드가 엄청 길어질 것만 같아서 

방법을 찾아 보았다. 역시나 방법은 있더라.

 

출처 : http://valkyurey.tistory.com/28

 

소스코드를 보면

private void txtInterval_KeyPress(object sender, KeyPressEventArgs e)         
{             //숫자만 입력되도록 필터링             
	if(!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back)))    //숫자와 백스페이스를 제외한 나머지를 바로 처리             
    {          
    	e.Handled = true;             
    }         
}

예전 코드를 넣던 방식이 안되어서.. 

 

 

위와 같다.

간단히 설명하자면 키가 눌렸을 때 char.IsDigit 메소드로 숫자 인지 확인해서 아닌경우는 바로 True로 처리

백스페이스 기능도 필요하므로 Convert.ToChar(Keys.Back)로 백스페이스인지 확인하여 필터링.

 

생각보다 간단하다. 이런식으로 이벤트를 처리하면 간단하다는 걸 느꼇다.

한글 입력 안되게 하는것도... 알아봐야 할텐데... 

찾아보니 많이 나온다. 나중에 정리 하는걸로.

 

 

 

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

 

드디어.. 한글 입력 안되게 하는 아주 간단한 방법을 알아왔다.

아... 어이가 없겠지만 VB에서 힌트를 얻었고 , C#도 동일 하다.

 

우선 TextBox 속성에 가보면 ImeMode가 있다. 

이 모드가 기본 값이 No Control일 것이다.

 

이것을 Disable로 바꾸면 한글로 되어 있는 상태에서 키를 눌러도 영어가 입력되는 것을 볼 수 있다.

 

이거.. 그림 넣을때 도형으로는 못넣는것인가 ? 아시는 분 ?

 

아무튼 이런식으로 한글 입력을 막을 수 있다.

 

IME mode에 alpha 나 alpha full 로 해보았으나 한글 입력이 되어서 disable이 제일 효율적인 방법인것 같다.