Textbox值校验控件编写

最近做了一个钢铁行业热轧的项目,虽然目前项目已经完工,但总是感觉自己在项目中写的代码量过多了点。其中尤为突出的就是大量Textbox的值的范围校验工作,让我写出了大量重复的代码。考虑到C#中Textbox没有值的范围校验的属性,十分恼火。于是自己动手添加了下,拿出和大家分享下。希望给出点意见!
一.创建一个用户自定义控件的项目这个我就不多说了。
二.将textbox和lable分别拖到控件的设计画面,按一定的方式布局完整,分别命名为lblCheckRange,txtValue。
三.转到代码设计
1、首先为用户自定义的控件定义两个属性,分别表示输入值的最大值和输入值的最小值。代码:
 private string _minVal;
        private string _maxVal;

        [DefaultValue(0), Description("定义输入值的值最小值。 "), Category("ValueRange")]
        public string MinValue
        {
            get
            { return _minVal;
            }
            set
            {
                _minVal = value;
                if (MaxValue != null && Double.Parse(MaxValue)<Double.Parse(_minVal))
                {
                    MessageBox.Show("你输入的值为最小值!必须小于MaxValue。", "提示");
                    _minVal = "";
                    return;
                }
            }
        }
        [DefaultValue(0), Description("定义输入值的值最大值。 "), Category("ValueRange")]
        public string MaxValue
        {
            get
            {
                return _maxVal;
            }
            set
            {
                _maxVal = value;
                if (MinValue != null && Double.Parse(MinValue) > Double.Parse(_maxVal))
                {
                    MessageBox.Show("你输入的值为最大值!必须小于MaxValue。", "提示");
                    _maxVal = "";
                    return;
                }
            }
        }
2.接下来我们还需要为我们的客户设计一个更人性化的工作。当用户输入值的时候,给出相应的值
的范围提示。这就是我为什么要添加Lable控件的原因了。切换到控件设计画面。选中Textbox双击其事件
Enter添加相应的工作。代码如下
  private void txtValue_Enter(object sender, EventArgs e)
        {
            if (MinValue!=null&&MaxValue!=null)
            {
                lblCheckRange.Visible = true;
                lblCheckRange.Text = "范围:" + MinValue + "~" + MaxValue;
                lblCheckRange.ForeColor = Color.Red;
            }
        }

3.接下来就做校验的事件了,当输入完毕焦点失去的时候我们需要做出相应的校验,所以我们需要在Leave
时间编写如下代码:
        private void rangeCheck()
        {
            if (txtValue.Text != "" && (Double.Parse(MinValue) != 0 || Double.Parse(MaxValue) != 0))
            {
                if (Double.Parse(txtValue.Text) < Double.Parse(MinValue) || Double.Parse(txtValue.Text) > Double.Parse(MaxValue))
                {
                    MessageBox.Show("您输入的值范围必须在" + this.MinValue + "和" + this.MaxValue + "之间");
                    txtValue.Text = "";
                }
            }
        }

        private void txtValue_Leave(object sender, EventArgs e)
        {
            try
            {
                rangeCheck();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            lblCheckRange.Visible = false;
        }


好了,接下来生成DLL文件,做一个小小的测试吧!不需要输入任何的代码,在属性中填写最大值和最小值。就可以很好的对值进行校验,
这样是不是更有效率。_--_

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值