728x90
명백히 숫자만 들어올 텍스트 박스에는 숫자만 들어가게끔 하는 것이 좋다.
유저가 숫자만 입력할 수 있는 컨트롤이라는 것을 인지하게끔 해당 컨트롤에 입력하기 전에 숫자만 입력할 수 있다는 사실을 알리는 것이 가장 효과가 크지만, 호기심으로 혹은 실수로 숫자가 아닌 것이 입력하는 경우가 있기 때문에 입력 자체를 제한하는 것이 필요할 때가 있다.
WPF에서는 KeyDown 이벤트나 PreviewKeyDown 이벤트가 발생할 때 아래 메서드를 작동시켜, 해당 컨트롤에 숫자 외의 텍스트가 입력되는 것 자체를 막는 방법을 사용할 수 있다.
private void TextBoxFrequency_PreviewKeyDown(object sender, KeyEventArgs e) { if (!Char.IsDigit((char)KeyInterop.VirtualKeyFromKey(e.Key)) & e.Key != Key.Back | e.Key == Key.Space) { e.Handled = true; MessageBox.Show("숫자만 입력해주세요.\n단위는 분(min)입니다.", "오류", MessageBoxButton.OK, MessageBoxImage.Error); } }
이 방법을 사용하면 숫자 입력 외에 모든 입력을 차단한다. 심지어 키패드에 있는 숫자를 눌러도 차단하는 불상사가 발생한다.
PreviewTextInput 이벤트를 사용하고 정규식을 비교하는 방법으로 메서드를 개선하면 키패드를 통한 숫자 입력도 가능하게 만들 수 있다.
private void TextBoxFrequency_PreviewTextInput(object sender, TextCompositionEventArgs e) { Regex regex = new Regex("[^0-9]+"); e.Handled = regex.IsMatch(e.Text); }
728x90
'정리가 필요한 카테고리(추후 정리) > C#,Unity' 카테고리의 다른 글
[WPF] 다른 스레드에서 UI 스레드 쪽에 접근하기 (0) | 2018.04.24 |
---|---|
Xamarin] Nuget 패키지 설치 시 오류 해결 방법 (0) | 2018.04.08 |
C#] C# 6.0 요약 (0) | 2018.03.08 |
C#] 리스트뷰(ListView) 컬럼 클릭하여 정렬하기 (0) | 2017.12.17 |
Xamarin] Xamarin.Forms 공식 가이드 따라 시작하기 (0) | 2017.12.03 |