2013-02-05 80 views
1

我可以爲一個錯誤提供程序處理(例如)6個文本框的多個驗證嗎?用錯誤提供程序處理多個錯誤

+2

是有哈米德·塔利比,看看這個StackOverflow的問題http://stackoverflow.com/questions/12129824/validating-multiple-textboxes-using-errorprovider – MethodMan

+0

@ DJKRAZE,我看到了。但是有一個問題!那麼我可以爲每個文本框寫一個錯誤文本驗證嗎?例如: var controls = new [] {tx1,tx2。 ....,txt10}; (e => String.IsNullOrEmpty(e.Text)) { errorProvider1.SetError(contro1,「請填寫這個」); errorProvider1.SetError(contro2,「請填寫必填項字段「); errorProvider1.SetError(contro3,」請填寫所有「); } –

+0

你可以添加你的代碼,你把你的問題的評論.. – MethodMan

回答

1

示例爲每個文本框提供一個錯誤(如果其爲空),並指定該錯誤適用於哪個文本框。

*帶開關編輯

private void Form1_Load(object sender, EventArgs e) 
{ 
    foreach (TextBox textBox in Controls) { textBox.Validating += textBox1_Validating; } 
} 

private void textBox1_Validating(object sender, CancelEventArgs e) 
{ 
    ErrorProvider errProv = new ErrorProvider(); 
    TextBox txtSender = (TextBox)sender; 
    string content = txtSender.Text; 
    string error = ""; 

    switch (txtSender.Name) 
    { 
     case "textBox1": 
      error = "error textbox1"; 
      break; 
     case "textBox2": 
      error = "error textbox2"; 
      break; 
     case "textBox3": 
      error = "error textbox3"; 
      break; 
     case "textBox4": 
      error = "error textbox4"; 
      break; 
     case "textBox5": 
      error = "error textbox5"; 
      break; 
     case "textBox6": 
      error = "error textbox6"; 
      break; 
     case "textBox7": 
      error = "error textbox7"; 
      break; 
     case "textBox8": 
      error = "error textbox8"; 
      break; 
    } 

    if (content == "") { errProv.SetError(txtSender, error); } 
} 
+0

難道你不能以更高效的方式來做到這一點..也有很多硬編碼..代碼可以減少使用方式的一個foreach循環.. – MethodMan

+0

@DJKRAZE只是明確地監督如何做到這一點。 –