C# WPF 快速开发18封装数据验证逻辑

来源:互联网 发布:wow 7.0.3数据库 编辑:程序博客网 时间:2024/06/06 03:15

进行填表工作的时候,很多地方不允许为空,如果要在程序中一个个控件都来判断有没有填写数据,代码量太多。

下面注释的代码表示为处理过的代码,而且只列出了几个控件代码。代码由传智播客杨老师编写。

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是什么变量,先特殊地方跟着用就好吧。作者杨老师说还有一种更牛逼的方法,叫反射来着。

原创粉丝点击