2020. 4. 10. 10:31ㆍVB.NET
코딩을 하다보면 어떤 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 : 이벤트가 처리 되지 않은 상태
상세 정보 ▼
③ 숫자만 입력 되게 하고, 한글도 입력 못하게 한다.
위 의 코드로 숫자와 실수의 '.' 과 백스페이스를 제외하곤 입력하지 못하게 막았으나,
한글은 그냥 입력이 되는 걸 볼 수 있습니다.
이럴 때는 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
'VB.NET' 카테고리의 다른 글
<VB.NET> DataGridView To DataTable (0) | 2020.05.25 |
---|---|
<VB.NET> DataTable To DataGridView (0) | 2020.05.22 |
VB.NET DataGridView 속도개선하기 (DoubleBuffered 이용) (0) | 2020.04.10 |
VB.NET Linq를 이용하여 DataTable에서 일치하는 항목 출력하기 (0) | 2020.04.10 |
VB.NET <TreeListView> 원하는 level 접기/펴기 (0) | 2020.04.09 |