您的位置:首页 > 其它

DevExpress 文本框只能输入数字验证

2014-04-16 11:29 197 查看
 public class NumberCheck

    {

        private static ToolTipController toolTipController1=new ToolTipController();

        /// <summary>

        /// 检查文本框是否录入的是整数数字类型 (支持全角输入)

        /// </summary>

        /// <param name="e"></param>

        public static void IntValueCheck(object sender, KeyPressEventArgs e)

        {

            if (e.KeyChar == 22)

            {

                IDataObject iData = Clipboard.GetDataObject();

                if (iData.GetDataPresent(DataFormats.Text))

                {

                    string mystr = (String)iData.GetData(DataFormats.Text);

                    System.Text.RegularExpressions.Regex Rgx = new System.Text.RegularExpressions.Regex(@"^\d+$");

                    if (!Rgx.Match(mystr).Success)

                        e.Handled = true;

                    else

                        return;

                }

                return;

            }

            //允许输入的字符

            string AstrictChar = "0123456789";

            //「BackSpace」「Delete」后退键正常删除操作

            if ((Keys)(e.KeyChar) == Keys.Back)

            {

                return;

            }

            //「Ctrl+C」(3)「Ctrl+X」(24)特殊组合键正常

            //「Ctrl+Z」(26) 撤消组合键正常

            if ((e.KeyChar == 3) || (e.KeyChar == 24) || (e.KeyChar == 26))

            {

                return;

            }

            //当首位和末尾的字符位.时

            //允许输入的字符外.

            if (AstrictChar.IndexOf(e.KeyChar.ToString()) == -1)

            {

                e.Handled = (e.KeyChar < '0' || e.KeyChar > '9') & (e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != '\b';

                if (e.KeyChar >= '0' & e.KeyChar <= '9')

                {

                    e.KeyChar = ToHalfInput(e.KeyChar);

                    return;

                }

                toolTipController1.Rounded = true;

                toolTipController1.ShowBeak = true;

                toolTipController1.ToolTipLocation = ToolTipLocation.TopCenter;

                toolTipController1.AutoPopDelay = 1000;

                ToolTipControllerShowEventArgs args = toolTipController1.CreateShowArgs();

                args.ToolTip = "请输入整数";

                args.IconType = ToolTipIconType.Information;

                args.ImageIndex = -1;

                args.IconSize = ToolTipIconSize.Small;

                toolTipController1.ShowHint(args, sender as TextEdit);

                e.Handled = true;

                return;

            }

        }

        /// <summary>

        /// 检查文本框是否录入的是整数数字类型 (支持全角输入)

        /// </summary>

        /// <param name="e"></param>

        public static void IntValueCheck(KeyPressEventArgs e)

        {

            if (e.KeyChar == 22)

            {

                IDataObject iData = Clipboard.GetDataObject();

                if (iData.GetDataPresent(DataFormats.Text))

                {

                    string mystr = (String)iData.GetData(DataFormats.Text);

                    try

                    {

                        Convert.ToInt32(mystr);

                        return;

                    }

                    catch

                    {

                        e.Handled = true;

                    }

                }

                return;

            }

            //允许输入的字符

            string AstrictChar = "0123456789";

            //「BackSpace」「Delete」后退键正常删除操作

            if ((Keys)(e.KeyChar) == Keys.Back)

            {

                return;

            }

            //「Ctrl+C」(3)「Ctrl+X」(24)特殊组合键正常

            //「Ctrl+Z」(26) 撤消组合键正常

            if ((e.KeyChar == 3) || (e.KeyChar == 24) || (e.KeyChar == 26))

            {

                return;

            }

            //当首位和末尾的字符位.时

            // if()

            //允许输入的字符外.

            if (AstrictChar.IndexOf(e.KeyChar.ToString()) == -1)

            {

                e.Handled = (e.KeyChar < '0' || e.KeyChar > '9') & (e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != '\b';

                if (e.KeyChar >= '0' & e.KeyChar <= '9')

                {

                    e.KeyChar = ToHalfInput(e.KeyChar);

                    return;

                }

                XtraMessageBox.Show("请输入整数!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                e.Handled = true;

                return;

            }

        }

        /// <summary>

        /// 检查文本框是否录入的是小数数字类型 (支持全角输入)

        /// </summary>

        /// <param name="e"></param>

        public static void DoubleValueCheck(object sender, KeyPressEventArgs e)

        {

            if (e.KeyChar == 22)

            {

                IDataObject iData = Clipboard.GetDataObject();

                if (iData.GetDataPresent(DataFormats.Text))

                {

                    string mystr = (String)iData.GetData(DataFormats.Text);

                    double dnum = 0;

                    if (double.TryParse(mystr, out dnum))

                    {

                        return;

                    }

                    else

                        e.Handled = true;

                }

                return;

            }

            //允许输入的字符

            string AstrictChar = "0123456789.";

            TextEdit tb = sender as TextEdit;

            if (tb != null && tb.Text.Trim().Length > 0)

            {

                if (tb.Text.IndexOf('.') >= 0)

                {

                    if (e.KeyChar.ToString().Equals("."))

                    {

                        e.Handled = true;

                        return;

                    }

                }

            }

            else if (tb.Text.Trim().Length == 0 && e.KeyChar.ToString() == ".")

            {

                e.Handled = true;

                return;

                //tb.Text = "0.";

            }

            //「BackSpace」「Delete」后退键正常删除操作

            if ((Keys)(e.KeyChar) == Keys.Back)

            {

                return;

            }

            //「Ctrl+C」(3)「Ctrl+X」(24)特殊组合键正常

            //「Ctrl+Z」(26) 撤消组合键正常

            if ((e.KeyChar == 3) || (e.KeyChar == 24) || (e.KeyChar == 26))

            {

                return;

            }

            //当首位和末尾的字符位.时

            //允许输入的字符外.

            if (AstrictChar.IndexOf(e.KeyChar.ToString()) == -1)

            {

                e.Handled = (e.KeyChar < '0' || e.KeyChar > '9') & (e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != '\b';

                if (e.KeyChar >= '0' & e.KeyChar <= '9')

                {

                    e.KeyChar = ToHalfInput(e.KeyChar);

                    return;

                }

                toolTipController1.Rounded = true;

                toolTipController1.ShowBeak = true;

                toolTipController1.ToolTipLocation = ToolTipLocation.TopCenter;

                toolTipController1.AutoPopDelay = 1000;

                ToolTipControllerShowEventArgs args = toolTipController1.CreateShowArgs();

                args.ToolTip = "请输入数字";

                args.IconType = ToolTipIconType.Information;

                args.ImageIndex = -1;

                args.IconSize = ToolTipIconSize.Small;

                toolTipController1.ShowHint(args, sender as TextEdit);

                e.Handled = true;

                return;

            }

        }

        /// <summary>

        /// 全角数字转换为半角

        /// </summary>

        /// <param name="quan"></param>

        /// <returns></returns>

        private static char ToHalfInput(char quan)

        {

            switch (quan)

            {

                case '0':

                    return '0';

                case '1':

                    return '1';

                case '2':

                    return '2';

                case '3':

                    return '3';

                case '4':

                    return '4';

                case '5':

                    return '5';

                case '6':

                    return '6';

                case '7':

                    return '7';

                case '8':

                    return '8';

                case '9':

                    return '9';

                default:

                    return '9';

            }

        }

    }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: