百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

C# Winform中MaskedTextBox控件的妙用

bigegpt 2024-09-11 00:54 3 浏览

MaskedTextBox控件概述

MaskedTextBox控件的主要用途是限制用户在文本框中输入的字符类型、数量以及格式。通过设置预定义的掩码模式,MaskedTextBox控件可以使用户在输入时只能输入符合要求的字符,从而方便开发者对用户输入的数据进行验证、格式化等操作。

掩码元素

常用的掩码元素如下表所示:

掩码元素

说明

0

数字,必需。 此元素将接受 0 到 9 之间的任何个位数。

9

数字或空格,可选。

#

数字或空格,可选。允许输入加号 (+) 和减号 (-)。

L

字母,必需。 将输入限制为 ASCII 字母 a-z 和 A-Z。

?

字母,可选。 将输入限制为 ASCII 字母 a-z 和 A-Z。

&

字符,必需。

C

字符,可选。

A

字母数字,必需。

a

字母数字,可选。

.

小数点占位符。

,

千位占位符。

:

时间分隔符。

/

日期分隔符。

$

货币符号。

<

向下移动。 将后面的所有字符转换为小写。

>

向上移动。 将后面的所有字符转换为大写。

所有其他字符

文字。 所有非掩码元素将在 MaskedTextBox 中按原样显示。 文本在运行时始终占据掩码中的静态位置,用户不能移动或删除文本。

应用范例

需要在界面中输入以下信息:

1)用户名:只能是字母,不能是数值等其它字符;

2)密码:6位字母或数字组成;

3)电话:11位数字组成;

4)日期:按照****/**/**格式输入,只能为有效的日期格式;

5)时间:按照**:**:**格式输入,只能为有效的时间格式

完整实现代码:

using System;
using System.Windows.Forms;

namespace WinForm_MaskedTextBoxDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 设置 mtxtUserName 文本框的输入掩码。其中 "LL???" 表示用户必须输入包含至少2个字符,至多5个字符,且只能为字母。
            mtxtUserName.Mask = "LL???";
            // 当用户输入不合法字符时,触发 MaskInputRejected 事件,并执行 mtxtUserName_MaskInputRejected 方法。
            mtxtUserName.MaskInputRejected += new MaskInputRejectedEventHandler(mtxtUserName_MaskInputRejected);

            // 文本不包括提示字符或文字
            mtxtPhoneNumber.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
            // 当输入错误时,发出提示音。
            mtxtPhoneNumber.BeepOnError = true;
            // 设置电话号码的掩码,"000-0000-0000" 中,0 代表数字,- 代表分隔符。
            mtxtPhoneNumber.Mask = "000-0000-0000";

            // 文本包括提示字符和文字。
            mtxtDate.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
            // 当输入错误时,发出提示音。
            mtxtDate.BeepOnError = true;
            // 设置验证类型为 DateTime。
            mtxtDate.ValidatingType = typeof(System.DateTime);
            // 设置日期的掩码,只能按格式输入0-9的数字。
            mtxtDate.Mask = "0000/00/00";
            // 当类型验证完成时,执行 mtxtDate_TypeValidationCompleted 方法。
            mtxtDate.TypeValidationCompleted += new TypeValidationEventHandler(mtxtDate_TypeValidationCompleted);

            // 文本包括提示字符和文字。
            mtxtTime.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
            // 当输入错误时,发出提示音。
            mtxtTime.BeepOnError = true;
            // 设置验证类型为 DateTime。
            mtxtTime.ValidatingType = typeof(System.DateTime);
            // 设置时间的掩码,只能按格式输入0-9的数字。
            mtxtTime.Mask = "00:00:00";
            // 当类型验证完成时,执行 mtxtTime_TypeValidationCompleted 方法。
            mtxtTime.TypeValidationCompleted += new TypeValidationEventHandler(mtxtTime_TypeValidationCompleted);

            // 设置密码字符显示为 *。
            mtxtPassword.PasswordChar = '*';
            // 文本不包括提示字符或文字
            mtxtPassword.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
            // 当输入错误时,发出提示音。
            mtxtPassword.BeepOnError = true;
            // 设置密码的掩码,只能为6位数的字母或数字
            mtxtPassword.Mask = "AAAAAA";
        }

        private void mtxtPhoneNumber_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {
            // 设置提示信息的标题
            toolTip1.ToolTipTitle = "Invalid Input";
            // 显示提示信息
            toolTip1.Show("We're sorry, but only digit are allowed in PhoneNumber.", mtxtPhoneNumber, mtxtPhoneNumber.Location, 3000);
        }

        private void mtxtUserName_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {
            // 设置提示信息的标题
            toolTip1.ToolTipTitle = "Invalid Input";
            // 显示提示信息
            toolTip1.Show("We're sorry, but only character are allowed in UserName.", mtxtUserName, mtxtUserName.Location, 3000);
        }

        private void mtxtTime_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
        {
            // 如果输入不是有效的时间类型,则执行以下代码块。
            if (!e.IsValidInput)
            {
                // 设置提示信息的标题
                toolTip1.ToolTipTitle = "Invalid Date Value";
                // 显示提示信息
                toolTip1.Show("We're sorry, but the value you entered is not a valid date. Please change the value.", mtxtTime, 3000);
                // 取消此次事件的处理,防止无效的日期输入被接受。
                // e.Cancel = true;
            }
        }
        private void mtxtDate_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
        {
            // 如果输入不是有效的日期类型,则执行以下代码块。
            if (!e.IsValidInput)
            {
                // 设置提示信息的标题
                toolTip1.ToolTipTitle = "Invalid Date Value";
                // 显示提示信息
                toolTip1.Show("We're sorry, but the value you entered is not a valid date. Please change the value.", mtxtDate, 3000);
                // 取消此次事件的处理,防止无效的日期输入被接受。
                // e.Cancel = true;
            }
        }
    }
}

运行效果:

相关推荐

Linux 命令 ncftp(文件传输)——想玩转linux就请一直看下去

我是IT悟道,点击右上方“关注”,每天分享IT、科技、数码方面的干货。Linuxncftp命令Linux命令大全Linuxncftp命令用于传输文件。FTP让用户得以下载存放于服务器主机的文件,...

玩转 Linux 之:磁盘分区、挂载知多少?

今天来聊聊linux下磁盘分区、挂载的问题,篇幅所限,不会聊的太底层,纯当科普!!1、Linux分区简介1.1主分区vs扩展分区硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两...

一文带你了解 Linux 文件权限,从基础到高级

在Linux中,每个文件和目录都关联了一组权限,定义了不同用户对其的访问能力。权限分为三类:读取(read,r)、写入(write,w)和执行(execute,x),分别用字母r、w、x...

Linux 使用 socat 让云服务器作为跳板机的方法

概念三台机器:客户端A(192.168.1.11)服务器B(192.168.1.88)跳板机C(192.168.1.32)实现A与B的双向数据传输,本该这样:A<...

Linux启动流程之ROM-CODE(linux启动详解)

1.从哪里开始?下图是AM335X核心板和功能框图:AM335X核心板的存储信息如下:AM335X核心板运行linux系统,在这里提出一个问题:上电后指令从哪里开始执行?DDRorEMMC?2....

「Linux」——select和epoll详解(linux epoll详解)

select和epoll详解select和epoll的区别(面试常考)select一、什么是select1.select函数原型2.参数解释3.参数timeout取值4.返回值5.监控原理二、sele...

Linux中使用输入输出和错误重定向, 赶紧收藏!

Linux中的每个进程都提供三个打开的文件(通常称为文件描述符),分别是标准的输入、输出和错误文件。StandardInput是键盘,抽象为文件,使编写脚本和程序更容易。StandardOut...

「正点原子Linux连载」第七十一章Linux 4G通信实验

1)实验平台:正点原子Linux开发板2)摘自《正点原子I.MX6U嵌入式Linux驱动开发指南》关注官方微信号公众号,获取更多资料:正点原子第七十一章Linux4G通信实验前面我们学习了如何在Li...

LSM Oops 内存错误根因分析与解决

作者简介:吴文涵,图形算法出身,同时热爱linux内核开发的工程师,喜欢推导并乐于分享。版权声明:本文最先发表于“泰晓科技”微信公众号,欢迎转载,转载时请在文章的开头保留本声明。Oops是...

连你家电器的算力都不放过,新发现Linux恶意软件用IoT设备挖矿

萧箫发自凹非寺量子位|公众号QbitAI继电脑和手机后,挖矿病毒也盯上了IoT设备。无论是智能冰箱、彩电还是洗衣机,但凡有点算力的(物联网和端侧)设备都可能被这种病毒感染,用于挖掘加密货币等...

Linux-AT命令干货分享,还不赶紧收藏!

苹果iOS 26锁屏大升级:更个性更沉浸 有五大亮点

【CNMO科技消息】CNMO注意到,苹果近日在iOS26开发者预览版中推出了多项锁屏界面创新功能,可以大幅提升用户个性化设置与操作便捷性。这些更新不仅优化了视觉体验,还通过技术手段增强了交互效率,为...

福彩 3D 第 2025178 期:心水407 !大小奇偶双平衡 + 跨度适配,速收藏

福彩3D第2025178期:497后和值回落!五维分析+形态调整策略福彩3D2025177期开奖号码497,组六形态,大小比2:1,奇偶比1:2,和值20,跨度5。面对大...

一加 Ace5 至尊版手机首发适配和平精英手游

7月8日消息,据用户反馈,一加Ace5至尊版手机开启新版本系统推送,升级包大小约6.83MB、版本号为15.0.2.215(CN01),适配了腾讯《和平精英》手游144Hz高刷。IT...

外媒称苹果今年秋季将推出超15款新品 远不止iPhone 17

【CNMO科技消息】2025年已过半程,有外媒指出苹果计划在今年秋季推出超过15款新产品,涵盖iPhone革新、M5芯片设备迭代、可穿戴设备升级及智能家居布局等。苹果1.iPhone17系列:产品...