C# 如何在Button类中利用验证/验证事件?

C# 如何在Button类中利用验证/验证事件?,c#,winforms,validation,button,C#,Winforms,Validation,Button,我了解验证事件如何与textbox一起工作,但我不了解它是如何通过表单上的按钮触发的 MSDN在其列表中未列出已验证/正在验证 但是,这两个属性都列为“属性”窗口中的事件。 如果您的条件不满足,您可以使用验证事件取消按钮的操作,而不是将该操作放在onClick事件中,而是将其放在验证事件中。如果您的条件不满足,您可以使用验证事件取消按钮的操作,而不是将该操作放在onClick事件中onClick事件将其放在已验证的事件中。它们列在那里,因为它们是从控件类继承的。这是,这是。注意它们来自控件。它们

我了解验证事件如何与textbox一起工作,但我不了解它是如何通过表单上的按钮触发的

MSDN在其列表中未列出已验证/正在验证

但是,这两个属性都列为“属性”窗口中的事件。

如果您的条件不满足,您可以使用验证事件取消按钮的操作,而不是将该操作放在onClick事件中,而是将其放在验证事件中。

如果您的条件不满足,您可以使用验证事件取消按钮的操作,而不是将该操作放在onClick事件中onClick事件将其放在已验证的事件中。

它们列在那里,因为它们是从控件类继承的。这是,这是。注意它们来自控件。

它们列在那里,因为它们是从控件类继承的。这是,这是。请注意,它们来自控制。

您访问了错误的MSDN文档页面。你应该走过去,在那里你可以找到关于和事件的帮助

每个控件派生对象都有两个名为验证和 验证。它还有一个名为的属性。 当该值设置为true时,默认情况下为true,然后控件 参与验证。否则,它不会

例如:

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 e-mail address string is not empty. 
   if(emailAddress.Length == 0)
   {
      errorMessage = "e-mail address is required.";
         return false;
   }

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

   errorMessage = "e-mail address must be valid e-mail address format.\n" +
      "For example 'someone@example.com' ";
      return false;
}
编辑:

WinForms上验证的最大问题是验证 仅在控件失去焦点时执行。因此,用户必须 实际上,在文本框内单击,然后在其他地方单击 要执行的验证例程。如果你只关心 关于输入的数据是否正确。但这不起作用 如果你试图确保用户没有将文本框留空 跳过它

在我的解决方案中,当用户单击表单的提交按钮时,我 检查表单上的每个控件或指定的任何容器 并使用反射来确定是否为其定义了验证方法 控制。如果是,则执行验证方法。如果有的话 验证失败,例程返回失败并允许 进程停止。这个解决方案非常有效,尤其是如果您有 需要验证的几个表单

参考资料:

您访问了错误的MSDN文档页面。你应该走过去,在那里你可以找到关于和事件的帮助

每个控件派生对象都有两个名为验证和 验证。它还有一个名为的属性。 当该值设置为true时,默认情况下为true,然后控件 参与验证。否则,它不会

例如:

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 e-mail address string is not empty. 
   if(emailAddress.Length == 0)
   {
      errorMessage = "e-mail address is required.";
         return false;
   }

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

   errorMessage = "e-mail address must be valid e-mail address format.\n" +
      "For example 'someone@example.com' ";
      return false;
}
编辑:

WinForms上验证的最大问题是验证 仅在控件失去焦点时执行。因此,用户必须 实际上,在文本框内单击,然后在其他地方单击 要执行的验证例程。如果你只关心 关于输入的数据是否正确。但这不起作用 如果你试图确保用户没有将文本框留空 跳过它

在我的解决方案中,当用户单击表单的提交按钮时,我 检查表单上的每个控件或指定的任何容器 并使用反射来确定是否为其定义了验证方法 控制。如果是,则执行验证方法。如果有的话 验证失败,例程返回失败并允许 进程停止。这个解决方案非常有效,尤其是如果您有 需要验证的几个表单

参考资料:

是否有一种简单的方法可以触发按钮上的验证/已验证事件?我只是想看看这个事件是如何触发的。我尝试将textbox放置在表单上,并在按钮和textbox之间进行选项卡切换,但这两个事件均未触发。请检查参考链接,它们将在任何可能的情况下帮助您。我检查了它们,但发现很难理解。是否有一种简单的方法触发按钮上的验证/验证事件?我只是想看看这个事件是如何触发的。我尝试将textbox放置在表单上,并在按钮和textbox之间进行选项卡切换,但这两个事件均未触发。请检查参考链接,它们将在任何可能的情况下为您提供帮助。我检查了它们,但发现很难理解。