进行填表工作的时候,很多地方不允许为空,如果要在程序中一个个控件都来判断有没有填写数据,代码量太多。
下面注释的代码表示为处理过的代码,而且只列出了几个控件代码。代码由传智播客杨老师编写。
boolisOK=true;//数据检验是否通过
////判断非空字段不能为空
//if(txtName.Text.Length<=0)
//{
//isOK=false;//投票只能投反对票
//txtName.Background=Brushes.Red;//背景变成红色
//}
//else
//{
////发现有问题¬则投反对票isOK=false;
////发现自己没问题¬也不能isOK=true;
//txtName.Background=null;//背景变成默认颜色
//}
//if(txtNational.Text.Length<=0)
//{
//isOK=false;
//txtNational.Background=Brushes.Red;//背景变成红色
//}
//else
//{
//txtNational.Background=null;
//}
////如果SelectedIndex<0则表示没有选中任何项
//if(cbDepatment.SelectedIndex<0)
//{
//isOK=false;
////让combobox变红要这样搞
//cbDepatment.Effect=
//newDropShadowEffect(){Color=Colors.Red};
//}
//else
//{
//cbDepatment.Effect=null;
//}
下面进行封装处理
//ref,out
privatevoidCheckTextboxNotEmpty(refboolisOK,
paramsTextBox[]textboxes)
{
foreach(TextBoxtxtBoxintextboxes)
{
if(txtBox.Text.Length<=0)
{
isOK=false;
txtBox.Background=Brushes.Red;
}
else
{
txtBox.Background=null;
}
}
}
privatevoidCheckComboBoxNotEmpty(refboolisOK,
paramsComboBox[]cmbs)
{
foreach(ComboBoxcmbincmbs)
{
if(cmb.SelectedIndex<0)
{
isOK=false;
cmb.Effect=newDropShadowEffect{Color=Colors.Red};
}
else
{
cmb.Effect=null;
}
}
}
privatevoidtxtSave_Click(objectsender,RoutedEventArgse)
{
boolisOK=true;
CheckTextboxNotEmpty(refisOK,txtName,txtNational,txtNativeAddr,txtAddr,
txtBaseSalary,txtTelNum,txtIdNum,txtPosition,txtNumber);
CheckComboBoxNotEmpty(refisOK,cbGender,cbMarriage,
cbPartyStatus,cbEducation,cbDepatment);
……
}
我也还不知道ref是什么变量,先特殊地方跟着用就好吧。作者杨老师说还有一种更牛逼的方法,叫反射来着。