2014-01-18 30 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