验证字段

时间:2012-11-30 12:58:00

标签: c# visual-studio-2010 c#-4.0

我的Windows窗体上有这样的东西

   field1                field 2                        mandatory             showfield

   textbox1               textbox2                      checkbox1          checkbox 2

   textbox3              textbox4                       checkbox3          checkbox4

....总共有5个字段

我想要的是首先迭代文本框如果它们被填充我想检查复选框是否被选中

我有以下数据

string[] textdata = { textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text, textBox8.Text, textBox9.Text, textBox10.Text, textBox11.Text };
bool[] chk = { checkBox1.Checked, checkBox2.Checked, checkBox3.Checked, checkBox4.Checked, checkBox5.Checked, checkBox6.Checked, checkBox7.Checked, checkBox8.Checked, checkBox9.Checked, checkBox10.Checked, checkBox11.Checked, checkBox12.Checked };

这是我试过的

4 个答案:

答案 0 :(得分:1)

您可以获取列表中的所有文本框,然后在每个框中迭代以检查数据..

List<TextBox> textBoxes = formObject.Controls.OfType<TextBox>();

   foreach(TextBox txtBox in textBoxes)
   {
       if(txtBox.Text == "")
         //Do some work
   }

同样,您可以执行其他控件的操作

答案 1 :(得分:1)

foreach (Textbox g in this.Controls.OfType<Textbox>())
{
if(g.text == "")
{
this.Controls[checkbox[gettextbox name and parse it to getnumber]].checked = true;    }  
}

答案 2 :(得分:0)

由于没有真正的问题/问题,我猜测问题可能是什么。

  

我想要的是首先迭代文本框,如果它们是   填写我想检查复选框是否被选中

     

我有以下数据

string[] textdata = { textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text, textBox8.Text, textBox9.Text, textBox10.Text, textBox11.Text };
bool[] chk = { checkBox1.Checked, checkBox2.Checked, checkBox3.Checked, checkBox4.Checked, checkBox5.Checked, checkBox6.Checked, checkBox7.Checked, checkBox8.Checked, checkBox9.Checked, checkBox10.Checked, checkBox11.Checked, checkBox12.Checked };

因此,您可以使用Enumerable.All检查是否所有TextBox都已填充:

bool allTextEntered = textdata.All(s => !string.IsNullOrWhiteSpace(s));

然后,如果缺少某些内容,您可以显示MessageBox,否则您可以检查是否已检查所有CheckBoxes

bool allCheckBoxChecked = chk.All(chk => chk);

答案 3 :(得分:0)

应该工作的简单方法是在文本框的Tag属性IE中设置文本框/复选框关系:

this.textbox1.Tag = this.checkbox1
//continue per textbox in this pattern

然后只查询集合中与谓词“文本框是否有值?”的项目,是,是否选中了复选框?“

最后的答案是前一个查询是否返回任何项目。

var isValid = this.Controls.OfType<Textbox>()
                  .Where(textbox => 
                          !string.IsNullOfWhitespace(textbox.Text) && 
                          (textbox.Tag as Checkbox).Checked)).Any();

这当然假设textbox(n)/ checkbox(n)验证是正确的,问题很不清楚。