校验文本框为空
我这界面上有好多文本框,每个文本框的值都是非空的,当哪一个文本框的值为空时,点击保存的话,系统提示错误,然后将焦点放在值为空的那个文本框中,还有就是我的文本框都放在GroupBox中的,,应该怎么实现啊?
------解决方案--------------------有2种方法:
1、很直接,就是在保存的函数体内,把所有的Textbox都来一次IsNull校验,若失败则把焦点定位在这个Textbox上;(虽然简单,但是比较机械,而且代码臃肿,很不优雅,不推荐)
2、对 Textbox 做一次封装,把IsNull的逻辑封装在一个方法内,然后再你单击保存按钮的时候,逐次调用所有Textbox的这个方法,若成功则保存,失败则返回。
------解决方案-------------------- 有现成的验证控件,其中有一个是检测非空的,属性中可以设置没有通过验证的话,焦点自然切换到出错的控件上
------解决方案--------------------  private void button1_Click(object sender, EventArgs e)
       {
           bool haveNull = false;
           //因为foreach (Control gb_Control in Controls)由底部向顶部索引用arControl保存Control倒序
           ArrayList arControl = new ArrayList(Controls.Count);          
           foreach (Control gb_Control in Controls)
           {
               if(gb_Control.GetType().ToString()=="System.Windows.Forms.GroupBox")
               {
                   arControl.Insert(arControl.Count, gb_Control);
               }
           }
           foreach (object obj in arControl)
           {
               if(obj!=null)
               {
                   foreach(Control tb_Control in ((GroupBox)obj).Controls)
                   {                                                              
                       if (tb_Control.GetType().ToString() == "System.Windows.Forms.TextBox")                  
                       {
                           if (((TextBox)tb_Control).Text == "")                         
                           {
                               MessageBox.Show(((TextBox)tb_Control).Name + "的内容为空", "提示");
                               ((TextBox)tb_Control).Focus();
                               haveNull = true;
                               break;                          
                           }                 
                       }            
                   }
               }
               if (haveNull)
               {
                   break;
               }
           }
       }
本来想写简单的  但是不小的不才 只有这种笨方法实现
------解决方案--------------------[code=C#][/code]
foreach(Control con in groupBox1)
{
  TextBox txt=con as TextBox;
  if(txt!=null&&txt.Trim()!="")
  {
     //系统报错
     txt.Focus();
  }
}