2013-02-05 54 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只是明确地监督如何做到这一点。 –