IT/C#

[C#] 숫자만 입력 가능한 텍스트박스 구현 방법 2가지!

Ella.J 2023. 3. 7. 17:22
728x90
반응형

 

안녕하세요 ELLA 입니다 🙌

 

개발을 하다 보면 한 번쯤 쓰게 되는 숫자 텍스트박스.

Integer나 Double, Float 등 텍스트박스 안의 값을 숫자로 형변환 할 때

오류를 줄일 수 있는 방법으로 많이 사용됩니다.

두 가지 방법 중 때에 따라 알맞게 사용하시면 됩니다.

 

 

첫 번째. NumericUpDown 컨트롤 사용하기!

아주 간단한 방법!

Winform 도구상자에서 NumericUpDown 컨트롤을 이용하는 방법입니다.

오른쪽의 UI를 보면 Up/Down 버튼이 있어 1 만큼씩 (혹은 설정한 단위 값으로) 값을 변경할 수 있으며, 숫자가 아닌 문자 입력은 자동으로 허용하지 않습니다.

하지만 NumericUpDown의 값은 10진수 Decimal 형식이기 때문에 소수점 단위를 사용할 경우에는 부적절합니다.

또한 오른쪽의 업다운 버튼이 디자인적으로 다른 구성요소들과의 통일성을 해치는 경우(?)에도 두 번째 방식을 사용하시면 됩니다.

 

 

두 번째. TextBox를 사용하되 입력 텍스트를 숫자만 적용하기!

두 번째 방식은 일반 TextBox를 사용하는 방법입니다.

일반 텍스트박스에서 KeyPress 이벤트를 이용하여 입력되는 값을 필터링할 수 있습니다.

TextBox 속성에서 KeyPress 이벤트를 생성해 주고, 아래와 같이 코드를 작성합니다.

KeyPressEventArgs로 받은 KeyChar를 필터링하여 누른 키가 숫자가 아니거나, .(점)이 아닌지 확인합니다.

CTRL Key가 눌린 경우에는 일반 키 입력을 허용해야 Ctrl+C, Ctrl+V 등의 키조합이 먹히기 때문에, if문에서 일반 키가 컨트롤키와 같이 눌린 건지 아닌지 확인해야 합니다.

그리고 소수점은 텍스트박스에서 하나만 존재해야 하기 때문에, 소수점 중복입력 방지를 위해 아래 if문을 추가로 체크해 줍니다.

 

 

저는 주로 두 번째 방법을 많이 사용합니다.

위에 처럼 Voltage/Current 쓰는 Power Supply, 계측기 등을 주로 다루기 때문에 소수점이 필수고 정확한 전압전류 값을 사용해서 테스트를 해야 하기 때문이죠.

코드가 간단해도 막상 오랜만에 쓰려고 하면 맨날 생각이 잘 안 나기 때문에 😅

블로그에 박제해 놓으려고 포스팅을 적어봤습니다.

 

아무튼, 오늘은 여기까지 써보겠습니다.

또 다른 박제거리가 필요하면 돌아오겠습니다.

다들 버그 없는 행복한 코딩되세요! 🖐

 

728x90
반응형