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이 제일 효율적인 방법인것 같다.
'ETC > C#' 카테고리의 다른 글
[C#] DataGridView 간 DataRow 이동.(DataTable add 시 이 행은 이미 다른 테이블에 속해 있습니다.) (1) | 2016.09.03 |
---|---|
[C#] 폼(Form) 최소, 최대, 닫기 버튼 없애기 (0) | 2016.09.03 |
[C#]Threading.Timer 생성자.. CallBack (0) | 2016.08.29 |
[C#]DataSet 압축(DataSet to Byte, DataSet Compression) (0) | 2016.08.29 |
[C#]Socket - 버퍼 사이즈보다 많은 양의 데이터 전송. (0) | 2016.08.29 |