文本框输入限制模块

 /// <summary>
 /// 文本框输入验证(开关版)(Validated)
 /// </summary>
 /// <param name="sender">文本信息</param>
 /// <param name="e"></param>
 /// <param name="textBoxName">文本框对象</param>
 /// <returns>返回是否是正确格式</returns>
 private void TextBoxLostFocusOpen(object? sender, EventArgs e)
 {
     // 默认的IP地址
     string _IP = "192.168.1.234";
     int DecimalPointCounting = 0;//判断小数点数量
     if (sender != null)
     {
         string? text = sender.ToString();//获取控件文本
         if (text != null)
         {
             string[] textArr = text.Split(' ');//分割控件文本
             text = textArr[2];
             char[] charsText = text.ToCharArray();//字符串转Char类型
             bool MessOpen = false;//是否是正确格式,真:格式错误
             if (text.Equals(""))
             {
                 _controllerAdd.Text = _IP;
             }
             else
             {
                 //bool id  = Regex.IsMatch(text, @"(\.{3})");/*\\d*/
                 //Regex rx = new Regex(@"^((2(5[0-5]|[0-4]\d))|1\d{2}|[1-9]?\d)(\.((2(5[0-5]|[0-4]\d))|1\d{2}|[1-9]?\d)){3}$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
                 //bool id = rx.IsMatch(text);
                 for (int i = 0; i < charsText.Length; i++)
                 {
                     //允许输入退格键和回车和小数点
                     if (charsText[i] != '\b' && charsText[i] != '\r' && charsText[i] != '.')
                     {
                         if ((charsText[i] < '0') || (charsText[i] > '9'))
                         {//当按下键不是0-9时
                             MessOpen = true;//格式错误
                         }
                     }
                     if (charsText[i] == '.')
                     {
                         DecimalPointCounting++;//判断小数点数量
                     }
                 }
                 if (MessOpen)
                 {
                     MessageBox.Show("只允许输入数字、退格、回车和小数点,请重新输入," + "正确的格式:XXX.XXX.X.X");
                     _controllerAdd.Text = _IP;
                 }
                 else if (DecimalPointCounting != 3)
                 {
                     MessageBox.Show("请输入正确的格式:XXX.XXX.X.X");
                     _controllerAdd.Text = _IP;
                 }
                 else
                 {
                     string[] ip = text.Split(".");
                     bool ErrOp = false;
                     bool isOk = true;
                     for (int i = 0; i < ip.Length; i++)
                     {
                         isOk = int.TryParse(ip[i], out int value);
                         if (value > 255)
                         {
                             ErrOp = true;
                         }
                     }
                     if (!isOk)
                         MessageBox.Show("请输入正确的格式:XXX.XXX.X.X");
                     if (ErrOp)
                     {
                         _controllerAdd.Text = _IP;
                         MessageBox.Show("不能超过255,请输入正确的地址");
                     }
                 }
             }
         }

     }
 }

/// <summary>
/// 文本框输入验证
/// </summary>
/// <param name="sender">文本信息</param>
/// <param name="e"></param>
/// <param name="textBoxName">文本框对象</param>
/// <returns>返回是否可以继续执行</returns>
private bool TextBoxLostFocus(object? sender, EventArgs e, TextBox textBoxName)
{
    bool Switch = true;
    if (sender != null)
    {
        string? text = sender.ToString();
        if (text != null)
        {
            string[] textArr = text.Split(' ');
            text = textArr[2];
            char[] charsText = text.ToCharArray();
            bool MessOpen = false;
            _textBoxText = text;
            for (int i = 0; i < charsText.Length; i++)
            {
                if (charsText[i] != '\b' && charsText[i] != '\r' && charsText[i] != '-')//允许输入退格键和回车
                {
                    if ((charsText[i] < '0') || (charsText[i] > '9'))
                    {//当按下键不是0-9时
                        MessOpen = true;
                    }
                }
            }
            if (MessOpen)
            {
                MessageBox.Show("只允许输入数字、-、退格和回车键,请重新输入");
                _textBoxNameT = textBoxName;
                SetText(textBoxName.Name);
                Switch = false;//不能继续执行
                _textBoxText = "";
            }
        }
    }
    return Switch;
}
 /// <summary>
 /// 文本框绑定的事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void TextBoxEventLostFocus(object? sender, EventArgs e)
 {
     try
     {
         string textBoxNameS = "";//保存控件名
         if (sender != null)
         {
             textBoxNameS = ((System.Windows.Forms.Control)sender).Name;//获取调用事件的控件名
             TextBox te = (TextBox)sender;

             DetermineControllerName(textBoxNameS);//获取控件对象
         }
         if (_textBoxNameT != null && textBoxNameS != null)
         {
             bool Switch = TextBoxLostFocus(sender, e, _textBoxNameT);//判断是否需要继续判断
             if (Switch)
             {
                 if (!_textBoxText.Equals(""))
                 {
                     double textBoxValue = double.Parse(_textBoxText);
                     if (textBoxNameS.Equals("positionErrorW") || textBoxNameS.Equals("positionErrorZ") || textBoxNameS.Equals("positionErrorY") || textBoxNameS.Equals("positionErrorX"))
                     {
                         if (textBoxValue >= 2147483647 || textBoxValue <= -2147483648)
                         {
                             _textBoxNameT.Text = _positionErrorAcquiesce;
                         }
                     }
                     else if (textBoxNameS.Equals("frontLimitW") || textBoxNameS.Equals("frontLimitZ") || textBoxNameS.Equals("frontLimitY") || textBoxNameS.Equals("frontLimitX"))
                     {
                         if (textBoxValue >= 2147483647 || textBoxValue <= -2147483648)
                         {
                             _textBoxNameT.Text = _frontLimitAcquiesce;
                         }
                     }
                     else if (textBoxNameS.Equals("backLimitW") || textBoxNameS.Equals("backLimitZ") || textBoxNameS.Equals("backLimitY") || textBoxNameS.Equals("backLimitX"))
                     {
                         if (textBoxValue >= 2147483647 || textBoxValue <= -2147483648)
                         {
                             _textBoxNameT.Text = _backLimitAcquiesce;
                         }
                     }
                 }
                 else
                 {
                     SetText(textBoxNameS);
                 }
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "文本框绑定的事件");
     }
 }

修改后:

textBoxR.LostFocus += TextBoxEventLostFocus;



 /// <summary>
 /// 文本框绑定的事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void TextBoxEventLostFocus(object? sender, EventArgs e)
 {
     try
     {
         string textBoxNameS = "";//保存控件名
         if (sender != null)
         {
             textBoxNameS = ((System.Windows.Forms.Control)sender).Name;//获取调用事件的控件名
             TextBox te = (TextBox)sender;
         }
         if ( textBoxNameS != null)
         {
             bool Switch = TextBoxLostFocus(sender, e);//判断是否需要继续判断
             if (Switch)
             {
                
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "文本框绑定的事件");
     }
 }


 /// <summary>
 /// 文本框输入验证
 /// </summary>
 /// <param name="sender">文本信息</param>
 /// <param name="e"></param>
 /// <param name="textBoxName">文本框对象</param>
 /// <returns>返回是否可以继续执行</returns>
 private bool TextBoxLostFocus(object? sender, EventArgs e)
 {
     bool Switch = true;
     if (sender != null)
     {
         string? text = sender.ToString();
         if (text != null)
         {
             string[] textArr = text.Split(' ');
             text = textArr[2];
             char[] charsText = text.ToCharArray();
             bool MessOpen = false;
             for (int i = 0; i < charsText.Length; i++)
             {
                 if (charsText[i] != '\b' && charsText[i] != '\r' && charsText[i] != '-')//允许输入退格键和回车
                 {
                     if ((charsText[i] < '0') || (charsText[i] > '9'))
                     {//当按下键不是0-9时
                         MessOpen = true;
                         break;
                     }
                 }
             }
             if (MessOpen)
             {
                 Switch = false;//不能继续执行
                 throw new Exception("只允许输入数字、-、退格和回车键,请重新输入");
             }
         }
     }
     return Switch;
 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值