进行填表工作的时候,很多地方不允许为空,如果要在程序中一个个控件都来判断有没有填写数据,代码量太多。
下面注释的代码表示为处理过的代码,而且只列出了几个控件代码。代码由传智播客杨老师编写。
bool isOK = 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 =
// new DropShadowEffect() { Color = Colors.Red };
//}
//else
//{
// cbDepatment.Effect = null;
//}
下面进行封装处理
//ref,out
private void CheckTextboxNotEmpty(ref bool isOK,
params TextBox[] textboxes)
{
foreach (TextBox txtBox in textboxes)
{
if (txtBox.Text.Length <= 0)
{
isOK = false;
txtBox.Background = Brushes.Red;
}
else
{
txtBox.Background = null;
}
}
}
private void CheckComboBoxNotEmpty(ref bool isOK,
params ComboBox[] cmbs)
{
foreach (ComboBox cmb in cmbs)
{
if (cmb.SelectedIndex < 0)
{
isOK = false;
cmb.Effect = new DropShadowEffect { Color=Colors.Red};
}
else
{
cmb.Effect = null;
}
}
}
private void txtSave_Click(object sender, RoutedEventArgs e)
{
bool isOK = true;
CheckTextboxNotEmpty(ref isOK, txtName, txtNational, txtNativeAddr, txtAddr,
txtBaseSalary, txtTelNum, txtIdNum, txtPosition, txtNumber);
CheckComboBoxNotEmpty(ref isOK, cbGender, cbMarriage,
cbPartyStatus, cbEducation, cbDepatment);
……
}
我也还不知道ref是什么变量,先特殊地方跟着用就好吧。作者杨老师说还有一种更牛逼的方法,叫反射来着。