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

日常开发过程中,验证字符的合法性一直是一个必不可少的步骤,以前都是在用户输入完再做判断,不仅麻烦在不符合标准的时候还要提示用户修改,体验很差,为什么不在输入的时候加以限制呢?

WinformTextBox控件为例,这里提供两种方案:

  • 通过字符匹配
  • 正则表达式

在用户输入时限制,所以选用KeyPress事件。

字符匹配

private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
  // 只允许输入字母和数字
  if (!char.IsLetterOrDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != '\b')
  {
    e.Handled = true;
  }

  // 限制输入长度为8位
  if (txt_Address.Text.Length >= 8 && !char.IsControl(e.KeyChar))
  {
    e.Handled = true;
  }
}

以上代码使用了TextBoxKeyPress事件处理程序。在该事件中,使用char.IsLetterOrDigit方法来判断输入的字符是否是字母或数字,如果不是,则将其处理掉,不允许输入。同时,使用char.IsControl方法来判断输入的字符是否是控制字符,如退格键、删除键等,这些特殊按键是允许输入的。另外,使用TextBoxText属性来获取输入框中的文本长度,如果长度超过 8 位并且输入的字符不是控制字符,也将其处理掉,不允许输入超过 8 位的字符。

测试过程中发现这样判断有一个缺陷就是中文还是能输进去?

正则表达式

private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
  // 使用正则表达式定义允许输入的字符模式
  string pattern = @"[a-zA-Z0-9]";
  Regex regex = new Regex(pattern);

  // 判断输入的字符是否符合允许的字符模式
  if (!regex.IsMatch(e.KeyChar.ToString()) && !char.IsControl(e.KeyChar))
  {
    // 如果输入的字符不符合字符模式,并且不是控制字符(如Backspace、Delete等),则禁止输入
    e.Handled = true;
  }

  // 限制输入长度为8位
  if (txt_Address.Text.Length >= 8 && !char.IsControl(e.KeyChar))
  {
    e.Handled = true;
  }
}

在上面的代码中,我们使用了正则表达式 [a-zA-Z0-9] 来定义了允许输入的字符模式,表示只允许输入字母(包括大小写)和数字字符。通过Regex.IsMatch方法来判断输入的字符是否符合这个字符模式,如果不符合并且也不是控制字符(如BackspaceDelete等),则通过e.Handled = true来禁止输入。

这样,用户在输入时如果尝试输入空格、中文或其他不符合字符模式的字符,将会被禁止输入。就不用每次都判断啦?,记得提前引用需要的命名空间哈。

using System.Text.RegularExpressions;

每天一个偷懒小技巧是?

原文链接:https://www.cnblogs.com/BoiledYakult/archive/2023/04/13/17312559.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 限制输入为字母或数字以及长度 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • stringstream操纵string的方法总结

    下面是详细讲解“stringstream操纵string的方法总结”的完整攻略: 1. stringstream 简介 stringstream 是 C++ 中很重要的一个类。它继承自 istream 和 ostream,可以方便地进行输入输出操作。 我们可以通过在stringstream 中写入不同类型的数据,并使用它的读取方法来统一获得这些数据。这种方法…

    C# 2023年6月8日
    00
  • C#中进程的挂起与恢复

    下面我将为您详细讲解“C#中进程的挂起与恢复”的完整攻略。 什么是进程挂起与恢复? 在操作系统中,进程是程序执行时的实例,每个进程都拥有独立的空间、数据和代码等资源。而进程挂起与恢复就是指将进程暂停执行,保存其当前状态,然后在需要时再恢复其执行状态,继续运行程序。 如何在C#中挂起和恢复进程? 挂起进程 在C#中,可以使用System.Diagnostics…

    C# 2023年6月7日
    00
  • C#的字符串比较

    C#中,字符串比较有多种方式,最常用的有三种:使用“==”比较,使用Equals方法比较,使用Compare方法比较。 使用“==”比较字符串 在C#中,可以使用“==”符号来比较两个字符串是否相等,例如: string str1 = "hello"; string str2 = "world"; string str…

    C# 2023年6月1日
    00
  • c#消息提示框messagebox的详解及使用

    C#消息提示框MessageBox的详解及使用 在C#编程中,提示信息是非常重要的,而MessageBox是处理提示信息的一种非常常见的方式。在本篇文章中,我们将深入探讨C#中的MessageBox,并介绍如何使用它来优化你的应用程序。 MessageBox对象 MessageBox是System.Windows.Forms命名空间的一部分,是一个弹出窗口,…

    C# 2023年6月7日
    00
  • c#中GetType()与Typeof()的区别

    C#中GetType()与Typeof()的区别 在C#中,GetType()和Typeof()都是C#中检索类型信息的两个重要方法。本文将详细讲解这两个方法的区别。 GetType() GetType()方法是用于确定当前对象的运行时类型的方法,返回的是实例对象的类型。由于C#是强类型语言,每个变量、属性或方法在编译时都必须指定明确的类型,当程序运行时变量…

    C# 2023年6月7日
    00
  • .NET Core中使用gRPC的方法

    使用gRPC是在.NET Core中构建分布式应用程序的一种流行方法。下面是在.NET Core中使用gRPC的完整攻略: 步骤1:创建gRPC服务 在Visual Studio中创建一个新的.NET Core项目,选择gRPC服务模板。这将创建一个含gRPC服务定义和实现的项目。 步骤2:定义gRPC服务 在.proto文件中定义gRPC服务。这个文件描述…

    C# 2023年5月12日
    00
  • C#中让控件全屏显示的实现代码(WinForm)

    以下是C#中让控件全屏显示的实现代码的攻略: 第一步:准备工作 首先,在你的WinForm程序中找到需要全屏显示的控件(例如一个PictureBox),然后在窗体的SizeChanged事件中添加代码。 接下来,你需要给控件添加以下属性: Dock = Fill 使得控件充满整个窗体 Anchor = Top, Bottom, Left, Right 使得控…

    C# 2023年6月7日
    00
  • C# DataTable使用方法详解

    C# DataTable使用方法详解 什么是DataTable DataTable是一个用于表示和操作内存中表格数据的类,它模拟了数据库中的数据表,包含了一行一列的数据,每列都有唯一的名称和类型,并且可以通过对DataTable进行填充、查询、排序、筛选等操作,来完成数据的管理和处理。 如何创建DataTable 可以通过以下步骤来创建DataTable: …

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部