-
C# 숫자만 입력되게 하는 방법들닷넷/WinForms 2019. 4. 5. 08:54반응형
금액이나 수량이 입력되는 텍스트박스를 만들 때 숫자가 아닌 것이 입력될 경우 계산에 오류를 주는 등 치명적인 오류가 발생할 수 있다.
그러므로 아예 입력될 때부터 숫자만 입력되게 할 수 있는 방법들에 대해 정리해 보았다.
1) KeyPress 이벤트에서 핸들링
[: 한글 입력은 ProcessKey이기 때문에 KeyPress 이벤트로는 한글 입력을 막지 못한다. 아래 방법 중 한가지를 같이 쓰던가 해야할 것이다.]
private void txtPrepay_KeyPress(object sender, KeyPressEventArgs e) { // 숫자와 백스페이스만 입력가능 if (!(char.IsDigit(e.KeyChar) || e.KeyChar == Convert.ToChar(Keys.Back))) { e.Handled = true; } }
2) TextChanged 이벤트에서 int.TryParse 메소드 사용
// textBox1에 값이 입력될 때 private void textBox1_TextChanged(object sender, EventArgs e) { int i; if (int.TryParse(textBox1.Text.Replace(",",""), out i)) { // textBox1의 값이 숫자이면 textBox1에 값 입력 textBox1.Text = i.ToString(); } else { // textBox1의 값이 숫자가 아니면 0으로 변경 textBox1.Text = "0"; } }
3) TextChanged 이벤트에서 정규식 Regex 사용
// textBox1에 값이 입력될 때 private void textBox1_TextChanged(object sender, System.EventArgs e) { Regex regexnumber = new Regex(@"[0-9]"); // 정규식 0~9 숫자만 Boolean ismatch = regexnumber.IsMatch(textBox1.Text); // textBox1의 값이 숫자가 아니면 0으로 변경 if (!ismatch) { textBox1.Text = "0"; } }
반응형'닷넷 > WinForms' 카테고리의 다른 글
C# 데이터그리드뷰 CSV 파일로 저장하기 (0) 2019.04.14 C# TextBox의 MultiLine을 사용할 때 라인(줄) 수 구하기 (0) 2019.04.09 C# 윈폼을 단순하지만 예쁜 디자인으로 탈바꿈 해주는 메트로폼 feat.Visual Studio에서 Metro UI Framework 추가하기 (0) 2019.03.04 C# DataGridView 열 전체 선택, 선택 풀기 (select row all or unselect row) (0) 2018.12.12 C# DataGridView 추가행에 기본값 설정하기 (DefaultValuesNeeded 이벤트) (0) 2018.12.10