日期:2014-05-18  浏览次数:20692 次

校验文本框为空
我这界面上有好多文本框,每个文本框的值都是非空的,当哪一个文本框的值为空时,点击保存的话,系统提示错误,然后将焦点放在值为空的那个文本框中,还有就是我的文本框都放在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();
}
}