2014-01-18 125 views
2

我使用的是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 = @"^\d{6}$"; 
    TheTextToValidate = textToValidate; 
    TheRegExpression = new Regex(TheRegExTest); 
    // test text with expression 
    if (TheRegExpression.IsMatch(TheTextToValidate)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
    } 

在执行更新操作时,我使用ms访问表中的值填充文本框。如果这个值是正确的,就放弃它,否则我必须更新它。请帮帮我。在此先感谢

+0

如果我手动保持光标在每一个文本框,并执行更新操作一切正常。 – user3181915

回答

0

我建议将验证代码放在一个单独的方法。呼叫同时从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); 
} 
+0

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