为文本框赋值时,文本框验证方法不起作用

Posted

技术标签:

【中文标题】为文本框赋值时,文本框验证方法不起作用【英文标题】:textbox validated method does not work while assigning value to textbox 【发布时间】:2014-01-18 11:57:16 【问题描述】:

我正在使用 c#.net 2.0 winforms。我在表单中使用 errorprovider 控件来验证文本框。虽然我以编程方式为该文本框赋值。文本框验证方法不会从文本框中获取值或将其视为空白值。如何在文本框中不输入值来验证我的文本框。这是代码

private void textBox6_Validated(object sender, EventArgs e)

    bTest6 = txtRegExPinIsValid(textBox6.Text);
    if (bTest6)
    
        this.errorProvider1.SetError(textBox6, "");
    
    else
    
        this.errorProvider1.SetError(textBox6, "This field must contain Exactly 6 digits");
    
 

 private bool txtRegExPinIsValid(string textToValidate)
 
     Regex TheRegExpression;
     string TheTextToValidate;
     string TheRegExTest = @"^\d6$";
     TheTextToValidate = textToValidate;
     TheRegExpression = new Regex(TheRegExTest);
     // test text with expression 
     if (TheRegExpression.IsMatch(TheTextToValidate))
     
         return true;
     
     else
     
         return false;
     
  

在执行更新操作时,我用 ms 访问表中的值填充文本框。如果值正确,请留下它,否则我必须更新它。请帮我。提前致谢

【问题讨论】:

如果我手动将光标保留在每个文本框中并执行更新操作一切正常.. 【参考方案1】:

我建议将验证代码放在单独的方法中。从Validated 事件和代码中您需要以编程方式验证的位置调用该方法,如下所示:

// Call this from wherever you need to validate a TextBox
void PerformValidation(TextBox textBox)

    bTest6 = txtRegExPinIsValid(textBox6.Text);
    if (bTest6)
    
        this.errorProvider1.SetError(textBox6, "");
    
    else
    
        this.errorProvider1.SetError(textBox6, "This field must contain Exactly 6 digits");
    


private void textBox6_Validated(object sender, EventArgs e)

    PerformValidation(textBox6);

【讨论】:

谢谢布雷特!!你给了一个完美的解决方案。我找到了一个替代解决方案。将所有布尔值分配给“真”。我强制验证方法将文本框视为已验证,因为这些值是通过从表中查询以编程方式分配给文本框的。在更新操作时,如果我想更正文本框中的值,则会调用验证方法。否则我就离开它,因为 bool 值已经设置为 true。

以上是关于为文本框赋值时,文本框验证方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章

WPF双向绑定不起作用

DataGrid文本框过滤不起作用

带有“IsReadOnly”的文本框样式触发器不起作用

禁用文本框后 JQuery UI 自动完成功能不起作用

更改文本框输入的背景颜色在为空时不起作用

剑道数字文本框最小值最大值不起作用