C# -- MaskedTextBox -- 주민등록번호 입력 적용
참고 : http://stackoverflow.com/a/4413209
https://msdn.microsoft.com/ko-kr/library/system.windows.forms.maskedtextbox.mask(v=vs.110).aspx
http://www.csharpstudy.com/WinForms/WinForms-maskedtextbox.aspx
http://www.dreamincode.net/forums/topic/168804-c%23-masked-text-box-position-cursor-to-left/
1. winform 으로 프로젝트 만들고, MaskedTextBox 올려 놓는다.
--> MaskedTextBox 속성에서 Mask 선택한다.
2. 다양한 mask 선택하는 창이 나오면, 주민등록번호 mask 를 선택후 ok 버튼 누른다.
3. 속성창에 Mask 적용된게 보인다.
4. 프로그램 실행 시켜보면, 의도와는 다르게 공백 입력 가능한 상태가 되어 문제....
-->즉, spacebar 누르면, 숫자 아닌데도 그냥 다음칸으로 이동하는 문제있다.
5. 속성창에서 ResetOnSpace 항목을 False 로 한다. ( spacebar 입력 무시하기위해)
마우스 클릭 이벤트 생길때, 공백 생기는곳 클릭 금지시키자...
- 공백생기는 곳 클릭시에는, 공백제거하는 trim() 메소드 적용후, 기존 입력값의 맨뒤로 이동하게 한다!
--- 이제 프로그램 실행하면, 제대로된 주민등록번호 입력창 성공!!!!!
PS) 마우스 클릭은 막았지만, 키보드 화살표로 이동하여 공백 생기는 경우는 막지 않음. 필요없다고 생각해서 안함.
<< 참고 사항 >>
// 주민등록번호 Mask
maskedTextBox1.Mask = "000000-0000000";
// spacebar 입력 무시하기
maskedTextBox1.ResetOnSpace = false;
// 내용 지우기
maskedTextBox1.Clear();
<< 소스 >>
| using System; | |
| using System.Collections.Generic; | |
| using System.ComponentModel; | |
| using System.Data; | |
| using System.Drawing; | |
| using System.Linq; | |
| using System.Text; | |
| using System.Threading.Tasks; | |
| using System.Windows.Forms; | |
| namespace maskedTextBox | |
| { | |
| public partial class Form1 : Form | |
| { | |
| public Form1() | |
| { | |
| InitializeComponent(); | |
| } | |
| private void maskedTextBox1_Click(object sender, EventArgs e) | |
| { | |
| if (maskedTextBox1.Text.Length == 7) // 기본 7자 부터 시작한다. | |
| { | |
| String txt = maskedTextBox1.Text.Substring(0, 6).Trim(); // '-' 제외하고 공백 제거 | |
| if (maskedTextBox1.SelectionStart > txt.Length) // 입력된 곳을 벗어나 click 하면 | |
| { | |
| maskedTextBox1.SelectionStart = txt.Length; // 입력한 곳의 맨끝으로 가고 | |
| } | |
| } | |
| else | |
| { | |
| String txt = maskedTextBox1.Text.Trim(); // 공백제거 | |
| if (maskedTextBox1.SelectionStart > txt.Length) // 입력된 곳을 벗어나 click 하면 | |
| { | |
| maskedTextBox1.SelectionStart = txt.Length; // 입력한 곳의 맨끝으로 가고 | |
| } | |
| } | |
| } | |
| } | |
| } |
'C#' 카테고리의 다른 글
| C# -- MSSQL 연동 (0) | 2016.02.13 |
|---|---|
| C# -- String, char, byte 변환하기 (0) | 2016.02.12 |
| C# -- listview, panel 에서 double buffered, ResizeRedraw Extension 사용하기 (1) | 2015.12.12 |
| c# -- Npgsql 이용하여 postgresql 접속하기 (1) | 2015.08.19 |
| C# -- 인쇄 #3 -- printing preview (1) | 2015.08.17 |


