WinForm中如何让Textbox只能输入一定范围的数字呢?

Winform中有一个自带的数字控件NumericUpDown,现在我想模仿它做个自定义的用户控件该怎么做呢?

首先,它有三个关键的属性Maximum(最大值),Minimum(最小值),Value(当前值),我们要把这三个属性加到自定义控件中。

然后,他还有两个加减按钮事件和输入框的改变事件,另外我还发现一个隐藏的功能,就是用户输入的值只能介于最大值与最小值中间我的做法是在输入框的KeyPress事件中记录上一次输入的值(PreValue),在TextChanged事件中判断改变后的值是否在最大值与最小值中间,如果不是则将PreValue赋值给输入框。

关键代码如下:

        #region 让输入的值在指定范围内

        /// 
        /// 上一次输入框的值
        /// 
        private string PreValue;

        /*
         在输入框输入一个值都顺序是:KeyPress => TextChanged
          */

        /// 
        /// 键盘按下并弹起之后
        /// 
        /// 
        /// 
        private void dSkinTextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != '\b')//这是允许输入退格键  
            {
                if ((e.KeyChar < '0') || (e.KeyChar > '9'))//这是允许输入0-9数字  
                {
                    e.Handled = true;
                    return;
                }
            }
            PreValue = dSkinTextBox1.Text;
        }
        
        /// 
        /// 输入框的值发生改变后
        /// 
        /// 
        /// 
        private void dSkinTextBox1_TextChanged(object sender, EventArgs e)
        {
            if (Valid(this.MyValue) == false)
            {
                //如果改变后都值不符合验证条件,则回到上一步
                this.dSkinTextBox1.Text = PreValue;
            }
        }

        #endregion

 

你可能感兴趣的:(桌面应用,Winform)