我需要判断4个TextBox,当点确认时,4个控件必须都不能为空,如果为空,则将为空的控件名字都提示出来,
如果不用逻辑控制,一个个的去判断,太繁琐了,哪位有好的办法帮我啊

解决方案 »

  1.   

    你可以先用一个数组把这四个TextBox放进去,然后遍历这个数组进行校验就行了:TextBox[] textboxes = { textBox1, textBox2, textBox3, textBox4};
    foreach(TextBox tb in textboxes)
    {
        if(string.IsNullOrEmpty(tb.Text))
        {
            MessageBox.Show(tb.Name);
        }
    }当然,遍历这4个TextBox的父控件的所有子控件也是可以的
      

  2.   

    TextBox[] tbs = new TextBox[] { textBox1, textBox2, textBox3, textBox4 };
    if (rbs.Any(x => x.Text == ""))
    {
        tbs.Where(x => x.Text == "").Tolist().ForEach(x => MessageBox.Show(x.Name));
    }
      

  3.   

    大侠,我刚说错一个问题,里面有一个combox...
    这个该怎么办啊
      

  4.   


                TextBox tb1, tb2, tb3, tb4;
                ComboBox cb;
                //initialize text box
                //todo...
                var tbArray = new Control[] { tb1, tb2, tb3, tb4, cb };
                var msg = string.Join(",", (from ctrl in tbArray where string.IsNullOrEmpty(ctrl.Text) select ctrl.Name));
                if (!string.IsNullOrEmpty(msg))
                {
                    MessageBox.Show(msg);
                }
      

  5.   

    那就用第二种办法,遍历它们的父控件的所有子控件,当然用这个方法的前提是它们必须都在同一个父控件里
    我现在假设它们都在Form里foreach(Control c in this.Controls)
    {
        if(c is TextBox || c is ComboBox)
        {
            if(string.IsNullOrEmpty(c.Text))
               MessageBox.Show(c.Name);
        }
    }
      

  6.   

    dynamic[] tbs = new dynamic[] { textBox1, textBox2, textBox3, textBox4, comboBox1 };
    if (rbs.Any(x => x.Text == ""))
    {
        tbs.Where(x => x.Text == "").Tolist().ForEach(x => MessageBox.Show(x.Name));
    }
      

  7.   


    实际情况是FORM里面有很多TextBox和Combox 而我只需要判断其中3个TextBox和1个Combox 
    这个如何控制... 
      

  8.   

    4楼和6楼都可以的,不过要用6楼的代码,你的程序必须是基于.net framework4.0