VB.NET TextBox에 숫자만입력받기(실수만 입력받기, 정수만 입력받기)

2020. 4. 10. 10:31VB.NET

728x90
반응형


코딩을 하다보면 어떤 TextBox에 특정 문자나 숫자나, 실수만 입력을 받아야만 하는 경우가 있습니다.

이럴 때 미리 Textbox에서 Event 처리를하여 입력 못하게 하는 방법을 공유 합니다.

 

① 실수만 입력 받을 때

'실수만 입력받기

If Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = Convert.ToChar(Keys.Back) Or e.KeyChar = ".") Then

e.Handled = True

End If

② 정수만 입력 받을 때

'정수만 입력받기

If Not (Char.IsDigit(e.KeyChar) Or e.KeyChar = Convert.ToChar(Keys.Back)) Then

e.Handled = True

End If


※ 부가 설명

i) IsDigit : Char 클래스의 IsDigit 함수를 통해 입력 들어온 KeyCode가 숫자 KeyCode인지?

ii) e.KeyChar = Convert.ToChar(Keys.Back) : Back Key 인지?

iii) e.Handled = True

입력 받은 키가 숫자가 아니고 또는 Back Key가 아니고 또는 "." 키가 아닌 경우는 입력되지 않게 해야 하므로

Hadled 를 True를 줍니다.

ㄱ) Handled = True : 이벤트가 처리 된 상태

ㄴ) Handled = False : 이벤트가 처리 되지 않은 상태

상세 정보 ▼

https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.forms.keypresseventargs.handled?view=netframework-4.8

 

③ 숫자만 입력 되게 하고, 한글도 입력 못하게 한다.

위 의 코드로 숫자와 실수의 '.' 과 백스페이스를 제외하곤 입력하지 못하게 막았으나,

한글은 그냥 입력이 되는 걸 볼 수 있습니다.

이럴 때는 TextBox Control의 IMEMode라는 옵션을 선택하여 활용 하면 될 것 같습니다.

' 한글 막기

textbox1.ImeMode= ImeMode.Disable

저 같은 경우는 그냥 Disable로 바꿔놓았습니다.

왜냐면 복잡하게 If문으로 체크 하는 것 보다 IME를 막아버리면 됩니다.

Field

Description

Alpha

8

영숫자 싱글바이트 합니다. 이 설정은 한글과 일본어 입력기에만 유효합니다.

AlphaFull

7

영숫자 더블 바이트 문자입니다. 이 설정은 한글과 일본어 입력기에만 유효합니다.

Close

11

IME가 닫혔습니다. 이 설정은 중국어 IME에 대해서만 유효합니다.

Disable

3

IME는 사용 하지 않도록 설정 합니다.

이 설정을 사용 하 여 사용자가 설정할 수 없으며 IME 키보드에서 및 입력기 부동 창은 숨겨집니다.

Hangul

10

한글 SBC입니다. 이 설정은 한글 입력기를 사용할 경우에에 대해서 유효합니다.

HangulFull

9

한글 dbc. 이 설정은 한글 입력기를 사용할 경우에에 대해서 유효합니다.

Hiragana

4

일본어 히라가나 dbc입니다. 이 설정은 일본어 IME에만 적합 합니다.

Inherit

-1

부모 컨트롤의 IME 모드를 상속합니다.

Katakana

5

일본어 가타카나 dbc입니다. 이 설정은 일본어 IME에만 적합 합니다.

KatakanaHalf

6

일본어 가타카나 SBC입니다. 이 설정은 일본어 IME에만 적합 합니다.

NoControl

0

None (기본값)입니다.

Off

2

입력 기가 꺼져 있습니다. 이 모드는 입력 기가 꺼져,

개체가 영어 입력 모드와 동일 하 게 동작 하 의미를 나타냅니다.

이 설정은 일본어, 중국어 간체 및 중국어 번체 IME에만 유효합니다.

On

1

입력 기가 켜져 있습니다. 이 값 나타내며

입력 기가 켜져 중국어 또는 일본어에 특수 문자를 입력할 수 있습니다.

이 설정은 일본어, 중국어 간체 및 중국어 번체 IME에만 유효합니다.

OnHalf

12

HalfShape의 IME입니다. 이 설정은 중국어 IME에 대해서만 유효합니다.

[출처] https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.forms.imemode?view=netframework-4.8




728x90
반응형