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