본문으로 바로가기

1. 모든 문자를 입력하면서 매칭이 되지 않으면 포커스를 이동못하게 하는 Validating이벤트를 이용

 

 

ErrorProvider error = new ErrorProvider();  // 에러를 띄우주는 클래스 생성 (닷넷 기본 제공)

 

Textbox1.Validating += Textbox_Validating; //텍스트박스에 validating이란 이벤트를 추가

 

 void Textbox_Validating(object sender, CancelEventArgs e)
        {
            System.Windows.Forms.TextBox textBox = sender as System.Windows.Forms.TextBox;
            if (textBox == null) { return; }

 

            string strpattern = string.Empty;
            string errorMessage = string.Empty;

 

            switch (textBox.Name)
            {
                case "Textbox1":
                    strpattern = @"^\d{1,}$";     // 숫자만 입력하게 
                    errorMessage = "양식에 맞게 입력해주세요.";
                    break;           

            }


            if (!Regex.IsMatch(textBox.Text, strpattern) && textBox.Text != "") { e.Cancel = true; error.SetError(textBox, errorMessage); } 

            // 맷칭이 되지 않거나 텍스트 박스에 뭐라도 입력이 되었을때 캔슬을 해주고 에러 메세지를 띄우준다. ( Textbox.Text != "" 이 없을 경우 포커스를

               줬을때 뭐라도 입력하지 않으면 빠져나올 수 없음.)

            else { error.SetError(textBox, ""); } // 조건에 만족했을 경우 에러메시지 없애줌.

        }

 

 

 

 

 

 

 

 

 

 

2. 애초에 문자자체를 원하는 키값만 입력받는 방법

 

Textbox1.KeyPress+= Textbox_KeyPress; // 키프레스 이벤트를 등록

 

 void Textbox_KeyPress(object sender, KeyPressEventArgs e)
        {
            System.Windows.Forms.TextBox textBox = sender as System.Windows.Forms.TextBox;
            if (textBox == null) { return; }

            string strpattern = string.Empty;

            switch (textBox.Name)
            {
                case "Textbox1":
                    if (char.IsNumber(e.KeyChar)) { e.Handled = false; } // 입력받은 문자가 숫자면 e.Handled = false; 로 만들어서 입력이 되게함
                    else { e.Handled = true; } // 숫자가 아닐시 true로 만들어서 입력 취소
                    break;
            }
        }