版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ming_5257/article/details/81842201
最近在进行机房收费系统的重构,在进行注册界面的时候,由于要有很多的信息需要收集并且上传到数据库,所以,在进行上传之前,要对所有的textbox和combobox进行是否为空的判断。
【思路】
1、结合之前vb版的机房的经验,最简单和容易理解的就是用if语句的嵌套。
大概是这个样子的!
if(txtcardno.Text=="")
{
MessageBox.Show("请填写卡号!");
txtcardno.Focus();
}
else
{
if()
{
}
else
{
if()
{
}
}
}
经过我的实战,十几个控件写完后,整整一大篇,虽然逻辑上确实上确实很容易理解,将漏填的信息具体的反馈给用户,但是这对于C#(面向对象语言)来说,就是非常不合适的。
所以就有了第二种解决方案。
2、只用一个if语句,结合逻辑判断。
大概是这个样子!
if(txtcardno.Text==""||txtstudentno.Text==''||……)
{
MessageBox.Show("请将信息填写完整!");
}
这样子确实非常简单,但是从用户的角度来说,就会比较麻烦,如果客户端要填写的只有几个,这样用户自然可以根据你的提示,一眼就能看到哪个漏填了,但是如果有10几个,20几个控件呢?用户找起来会很麻烦。
所以就有了第三种方法!
3、利用C#语言的特性,封装性,我们可以将判断是否漏填的方法,封装起来,这样,如果需要进行判断,就只需要调用方法就行了,非常方便!
代码大概是这样:
using Syste.Windows.Forms; //因为方法独自写在类中,使用控件需要引用方法
public class isNull
{
public void isnull(ref bool isOk, params TextBox[] textBoxs)//写一个方法,判断txtbox控件是否为空
{
foreach (TextBox txtbox in textBoxs) //遍历传进来的所有TextBox控件
{
if (txtbox.Text.Length <= 0) //如果长度为0
{
isOk = false; //给标签的值改为false,标签的作用是在实际用的时候,进行判断的
txtbox.BackColor = Color.Red;//如果该控件的长度为0,就把他的背景色改为醒目的红色。
}
else
{
txtbox.BackColor = Color.White;//如果不为0,保持默认的白色。
}
}
}
public void isnull(ref bool isOk, params ComboBox[] comboBoxs)//将方法进行重载,支持判断combobox类型
{
foreach (ComboBox cmbbox in comboBoxs)
{
if (cmbbox.SelectedIndex <= 0)//此处要注意,你的combobox的控件属性值的默认值不能为0.可以将该控件的默认值0写成“-请选择-”
{
isOk = false;
cmbbox.DroppedDown = true;//在这里控件的默认值为0,则代表用户没有进行选择,就把该下拉框的下拉菜单展示出来。
}
}
}
}
}
//在窗体中的运用
private void btnOk_Click_1(object sender, EventArgs e)
{
bool isok = true; //将标签的默认值写成true,因为方法里是,如果空填就把标签值改成false
isNull isnull = new isNull();//实例化方法类
isnull.isnull(ref isok, cmbSex, cmbDepartment, cmbGrade, cmbClass);//调用方法,括号中写入需要检查为空的控件名,注意控件类型与方法类型匹配
isnull.isnull(ref isok, txtcardno, txtStudentName, txtstudentno);//利用重载的方法, 检查textbox类型控件是否为空,
if (!isok)
{
return;//如果控件为空,就按照方法里的设置返回值,文本框为空,它的背景色就会变成红色,如果combobox没有选择,就会打开它的下拉菜单。
}
else
{
//写都不为空成立时,接下来的操作!
}
【反思】
这个方法写出来之后,真的是非常的方便,所有需要判断是否漏填的窗体,直接调用方法就OK了,特别爽,虽然对于大佬来说,这没有什么,但是自己实现这个方法之后,我感觉我已经爱上了C#!哈哈,如果,你有更好的方法, 欢迎一起交流!