`

文本框输入限制

阅读更多

/***********************************************************************  
* Copyright(c) 2010 XX公司  
* CLR 版本: 2.0.50727.42  
* 文 件 名:InputValidateInterFace.cs  
* 创 建 人:FK  
* 创建日期:2010-11-29 13:20:52  
* 修 改 人:  
* 修改日期:  
* 备注描述:输入限制         
************************************************************************/
using System;
using System.Windows.Forms;

namespace ScreenShow
{
    public sealed class InputValidate
    {
        #region 输入控制--限制只能输入浮点数、数字字符、整数
        /// <summary>
        /// 限制只能输入浮点数和负号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void InputDecimalMinus(object sender, KeyPressEventArgs e)
        { //限制只能输入浮点数

            //如果不是0~9(48~57)、.(46)、Enter(13)、BreakSpace(8),不处理
            if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46 && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26 && e.KeyChar != 45)
            {
                e.Handled = true;
            }
            //允许输入负号
            if (e.KeyChar == 45 && (((TextBox)sender).SelectionStart != 0 || ((TextBox)sender).Text.IndexOf("-") >= 0))
            {
                e.Handled = true;
            }

            //如果是小数点,则判断是否已经存在,如果存在,则不拒绝当前输入
            if (e.KeyChar == 46 && (((TextBox)sender).SelectionStart == 0 || ((TextBox)sender).Text.IndexOf(".") >= 0))
            {
                e.Handled = true;
            }
            //如果是回车键,则进行焦点转移
            if (e.KeyChar != 13) return;

            SendKeys.Send("{TAB}");
            e.Handled = true;
        }

        /// <summary>
        /// 限制只能输入浮点数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void InputDecimal(object sender, KeyPressEventArgs e)
        { //限制只能输入浮点数

            //如果不是0~9(48~57)、.(46)、Enter(13)、BreakSpace(8),不处理
            if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 46 && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26)
            {
                e.Handled = true;
            }

            //如果是小数点,则判断是否已经存在,如果存在,则不拒绝当前输入
            if (e.KeyChar == 46 && (((TextBox)sender).SelectionStart == 0 || ((TextBox)sender).Text.IndexOf(".") >= 0))
            {
                e.Handled = true;
            }
            //如果是回车键,则进行焦点转移
            if (e.KeyChar != 13) return;

            SendKeys.Send("{TAB}");
            e.Handled = true;
        }

        /// <summary>
        /// 只能输入数字字母
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void InputAllCode(object sender, KeyPressEventArgs e)
        {//只能输入数字字母  backspace 8,ctrl+v 22,ctrl+c 3,ctrl+x 24,ctrl+z 26
            if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar) && e.KeyChar != 13 && !((e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'A' && e.KeyChar <= 'Z')) && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26)
            {
                e.Handled = true;
            }
            else
            {
                if (e.KeyChar == 13)
                {
                    SendKeys.Send("{TAB}");
                    e.Handled = true;
                }
            }
        }

        /// <summary>
        /// 限制只能输入整数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void InputInteger(object sender, KeyPressEventArgs e)
        {//限制只能输入整数
            if (e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 13 && e.KeyChar != 22 && e.KeyChar != 3 && e.KeyChar != 24 && e.KeyChar != 26)
            {
                e.Handled = true;
            }
            else
            {
                //如果第一位输入0,则不接收
                if (e.KeyChar == 48 && (((TextBox)sender).SelectionStart == 0))
                    e.Handled = true;
                //如果是回车键,则按tab序进行跳转
                if (e.KeyChar == 13)
                {
                    SendKeys.Send("{TAB}");
                    e.Handled = true;
                }
            }
        }
        #endregion 输入控制--限制只能输入浮点数、数字字符、整数
    }
}

 

调用

 

        private void txtGoodsCount_KeyPress(object sender, KeyPressEventArgs e)
        {
            try
            {
                inputValidate.InputInteger(sender, e);
            }
            catch (Exception ex)
            {
                LogHelper.LogException(ex);
                MsgBox.Error("系统出错!");
            }
        }
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics