다음을 통해 공유


Control.Validating 이벤트

정의

컨트롤의 유효성을 검사할 때 발생합니다.

public:
 event System::ComponentModel::CancelEventHandler ^ Validating;
public event System.ComponentModel.CancelEventHandler Validating;
public event System.ComponentModel.CancelEventHandler? Validating;
member this.Validating : System.ComponentModel.CancelEventHandler 
Public Custom Event Validating As CancelEventHandler 

이벤트 유형

예제

다음 코드 예제에서는 파생 클래스 TextBox 를 사용 하 고 사용자가 입력 하는 전자 메일 주소의 유효성을 검사 합니다. 전자 메일 주소가 표준 형식("@" 및 "."포함)이 아닌 경우 유효성 검사가 실패 ErrorProvider 하고 아이콘이 표시되고 이벤트가 취소됩니다. 이 예제에서는 폼에 a TextBoxErrorProvider 컨트롤을 만들어야 합니다.

private:
   void textBox1_Validating( Object^ sender, System::ComponentModel::CancelEventArgs^ e )
   {
      String^ errorMsg;
      if ( !ValidEmailAddress( textBox1->Text, &errorMsg ) )
      {
         // Cancel the event and select the text to be corrected by the user.
         e->Cancel = true;
         textBox1->Select( 0, textBox1->Text->Length );
         
         // Set the ErrorProvider error with the text to display.
         this->errorProvider1->SetError( textBox1, errorMsg );
      }
   }

   void textBox1_Validated( Object^ sender, System::EventArgs^ e )
   {
      // If all conditions have been met, clear the ErrorProvider of errors.
      errorProvider1->SetError( textBox1, "" );
   }

public:
   bool ValidEmailAddress( String^ emailAddress, [Out]interior_ptr<String^> errorMessage )
   {
      // Confirm that the email address String* is not empty.
      if ( emailAddress->Length == 0 )
      {
         *errorMessage = "email address is required.";
         return false;
      }

      // Confirm that there is an "@" and a "." in the email address, and in the correct order.
      if ( emailAddress->IndexOf( "@" ) > -1 )
      {
         if ( emailAddress->IndexOf( ".", emailAddress->IndexOf( "@" ) ) > emailAddress->IndexOf( "@" ) )
         {
            *errorMessage = "";
            return true;
         }
      }

      *errorMessage = "email address must be valid email address format.\n" +
         "For example 'someone@example.com' ";
      return false;
   }
private void textBox1_Validating(object sender, 
                System.ComponentModel.CancelEventArgs e)
{
   string errorMsg;
   if(!ValidEmailAddress(textBox1.Text, out errorMsg))
   {
      // Cancel the event and select the text to be corrected by the user.
      e.Cancel = true;
      textBox1.Select(0, textBox1.Text.Length);

      // Set the ErrorProvider error with the text to display. 
      this.errorProvider1.SetError(textBox1, errorMsg);
   }
}

private void textBox1_Validated(object sender, System.EventArgs e)
{
   // If all conditions have been met, clear the ErrorProvider of errors.
   errorProvider1.SetError(textBox1, "");
}
public bool ValidEmailAddress(string emailAddress, out string errorMessage)
{
   // Confirm that the email address string is not empty.
   if(emailAddress.Length == 0)
   {
      errorMessage = "email address is required.";
         return false;
   }

   // Confirm that there is an "@" and a "." in the email address, and in the correct order.
   if(emailAddress.IndexOf("@") > -1)
   {
      if(emailAddress.IndexOf(".", emailAddress.IndexOf("@") ) > emailAddress.IndexOf("@") )
      {
         errorMessage = "";
         return true;
      }
   }
   
   errorMessage = "email address must be valid email address format.\n" +
      "For example 'someone@example.com' ";
      return false;
}
   Private Function ValidEmailAddress(ByVal emailAddress As String, ByRef errorMessage As String) As Boolean
      ' Confirm there is text in the control.
      If textBox1.Text.Length = 0 Then
         errorMessage = "Email address is required."
         Return False

      End If

      ' Confirm that there is an "@" and a "." in the email address, and in the correct order.
      If emailAddress.IndexOf("@") > -1 Then
         If (emailAddress.IndexOf(".", emailAddress.IndexOf("@")) > emailAddress.IndexOf("@")) Then
            errorMessage = ""
            Return True
         End If
      End If

      errorMessage = "Email address must be valid email address format." + ControlChars.Cr + _
        "For example 'someone@example.com' "
      Return False
End Function

   Private Sub textBox1_Validating(ByVal sender As Object, _
   ByVal e As System.ComponentModel.CancelEventArgs) Handles textBox1.Validating

      Dim errorMsg As String
      If Not ValidEmailAddress(textBox1.Text, errorMsg) Then
         ' Cancel the event and select the text to be corrected by the user.
         e.Cancel = True
         textBox1.Select(0, textBox1.Text.Length)

         ' Set the ErrorProvider error with the text to display. 
         Me.errorProvider1.SetError(textBox1, errorMsg)
      End If
   End Sub


   Private Sub textBox1_Validated(ByVal sender As Object, _
   ByVal e As System.EventArgs) Handles textBox1.Validated
      ' If all conditions have been met, clear the error provider of errors.
      errorProvider1.SetError(textBox1, "")
   End Sub

설명

키보드(TAB, Shift+TAB 등)를 사용하거나, 메서드를 호출 Select 하거나 SelectNextControl , 속성을 현재 양식으로 설정 ContainerControl.ActiveControl 하여 포커스를 변경하는 경우 포커스 이벤트는 다음 순서대로 발생합니다.

  1. Enter

  2. GotFocus

  3. Leave

  4. Validating

  5. Validated

  6. LostFocus

마우스를 사용하거나 메서드를 호출하여 포커스를 Focus 변경하는 경우 포커스 이벤트는 다음 순서대로 발생합니다.

  1. Enter

  2. GotFocus

  3. LostFocus

  4. Leave

  5. Validating

  6. Validated

속성이 CausesValidation 설정된 falseValidating 경우 이벤트 및 Validated 이벤트가 표시되지 않습니다.

Cancel 이벤트 대리자 CancelEventArgs 에서 true 속성이 설정된 Validating 경우 일반적으로 이벤트가 표시되지 않은 후에 Validating 발생하는 모든 이벤트가 표시됩니다.

주의

, GotFocus, Leave, ValidatingLostFocus또는 Validated 이벤트 처리기 내에서 포커스를 Enter설정하지 마세요. 이렇게 하면 애플리케이션 또는 운영 체제의 응답이 중지될 수 있습니다. 자세한 내용은 WM_KILLFOCUS "키보드 입력 참조" 섹션의 항목과 메시지 및 메시지 큐 정보 문서의 "메시지 교착 상태" 섹션을 참조하세요.

이벤트 처리에 대한 자세한 내용은 이벤트 처리 및 발생시키기를 참조하십시오.

적용 대상

추가 정보