翼度科技»论坛 编程开发 .net 查看内容

C# 限制输入为字母或数字以及长度

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
日常开发过程中,验证字符的合法性一直是一个必不可少的步骤,以前都是在用户输入完再做判断,不仅麻烦在不符合标准的时候还要提示用户修改,体验很差,为什么不在输入的时候加以限制呢?
以 Winform的TextBox控件为例,这里提供两种方案:

  • 通过字符匹配
  • 正则表达式
在用户输入时限制,所以选用KeyPress事件。
字符匹配
  1. private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
  2. {
  3.   // 只允许输入字母和数字
  4.   if (!char.IsLetterOrDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != '\b')
  5.   {
  6.     e.Handled = true;
  7.   }
  8.   // 限制输入长度为8位
  9.   if (txt_Address.Text.Length >= 8 && !char.IsControl(e.KeyChar))
  10.   {
  11.     e.Handled = true;
  12.   }
  13. }
复制代码
以上代码使用了TextBox的KeyPress事件处理程序。在该事件中,使用char.IsLetterOrDigit方法来判断输入的字符是否是字母或数字,如果不是,则将其处理掉,不允许输入。同时,使用char.IsControl方法来判断输入的字符是否是控制字符,如退格键、删除键等,这些特殊按键是允许输入的。另外,使用TextBox的Text属性来获取输入框中的文本长度,如果长度超过 8 位并且输入的字符不是控制字符,也将其处理掉,不允许输入超过 8 位的字符。
<blockquote>
测试过程中发现这样判断有一个缺陷就是中文还是能输进去
来源:https://www.cnblogs.com/BoiledYakult/archive/2023/04/13/17312559.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具