Control.Validating 事件

定义

在控件验证时发生。

C#
public event System.ComponentModel.CancelEventHandler Validating;
C#
public event System.ComponentModel.CancelEventHandler? Validating;

事件类型

示例

下面的代码示例使用派生类 TextBox 并验证用户输入的电子邮件地址。 如果电子邮件地址不是标准格式, (包含“@”和“”。) ,验证失败,显示图标 ErrorProvider 并取消事件。 此示例要求 TextBox 已在窗体上创建 和 ErrorProvider 控件。

C#
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;
}

注解

通过使用键盘 (TAB、SHIFT+TAB 等) 、调用 SelectSelectNextControl 方法或将 属性设置为 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如果在事件委托中Validating将 的 CancelEventArgs 属性设置为 true ,则通常会在事件后Validating发生的所有事件都会被禁止显示。

注意

不要尝试从 、、GotFocusValidatingLeaveLostFocus、 或 Validated 事件处理程序中Enter设置焦点。 这样做可能会导致应用程序或操作系统停止响应。 有关详细信息,请参阅 WM_KILLFOCUS “键盘输入参考”部分中的主题和 关于消息和消息队列 一文的“消息死锁”部分。

有关处理事件的详细信息,请参阅 处理和引发事件

适用于

产品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另请参阅