将文本框传递到空白

本文关键字:空白 文本 | 更新日期: 2023-09-27 17:59:00

我不确定我是否使用了错误的术语,这可能是我的搜索没有找到任何结果的原因。

我有一堆文本框,我想验证并检查它们是否不包含撇号。我的代码是:

public void apostropheCheck(TextBox fieldName)
{
    Match m = Regex.Match(fieldName.Text, @"'");
    if (m.Success)
    {
        validationErrorProvider.SetError(fieldName, "Field can not contain apostrophes");
    }
    else if (!m.Success)
    {
        validationErrorProvider.SetError(fieldName, "");
    }
}

文本框上的验证为:

private void FirstNameTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
    //Checks for apostrophes
    apostropheCheck(FirstNameTextBox);
}

然而,当我运行此操作时,传递到void的值是文本框中的文本(例如"John"或"Mary")。我可以使用每个验证事件的void中的代码来实现此操作,但这会重复很多次。有更好的方法吗?

将文本框传递到空白

您可以有一个通用处理程序,并将其用于所有文本框的Validating事件。

private void CommonTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
    //Checks for apostrophes
    apostropheCheck((TextBox)sender);
}

事件的发送方对象是一个TextBox,因此您可以将其强制转换为一个文本框,并对应用程序中的所有文本框重复相同的事件处理程序

private void FirstNameTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
    apostropheCheck(((TextBox)sender).Text);
}
  1. 术语:您将函数apostropheCheck称为void,这是其返回类型。标准方法是使用函数名称撇号Check。

  2. 如果您将代码中文本框的名称替换为发件人(例如),则所有文本框都可以使用相同的功能进行验证

private void FirstNameTextBox_Validing(对象发送方,System.ComponentModel.CancelEventArgs e){//检查撇号撇号检查((TextBox)发件人);}