目录

  • WPF TextBox 允许输入数字及字母的工具类
    • 工具代码
    • 如何使用

WPF TextBox 允许输入数字及字母的工具类

WPF TextBox 仅允许数字、数字及小数点、字母及数字等进行输入。
本工具默认禁用TextBox获取焦点时的输入法功能,仅能通过键盘输入字符,字符输入受限于正则表达式,使用简单。

工具代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Controls;
using System.Windows.Input;namespace 命名空间
{/// <summary>/// TextBox 输入控制/// </summary>public class MaskInputTextBoxUtils{#region 《正则表达式常量》/// <summary>/// 字母大小写和数字/// </summary>public const string LETTERS_AND_NUMBERS = @"[^A-Za-z0-9]";/// <summary>/// 数字和小数点/// </summary>public const string NUMBERS_AND_POINT = @"[^0-9.]";/// <summary>/// 纯数字/// </summary>public const string NUMBERS = @"[^0-9]";#endregionpublic static MaskInputTextBoxUtils CreateObject(TextBox TextBoxControl, string RegExp){return new MaskInputTextBoxUtils(TextBoxControl, RegExp);}private MaskInputTextBoxUtils(TextBox textBoxControl, string regExp){this.TextBoxControl = textBoxControl;this.RegexObj = new Regex(regExp);}public Regex RegexObj { get; protected set; }public TextBox TextBoxControl { get; protected set; }public void Build(){///关闭输入法InputMethod.SetPreferredImeState(TextBoxControl, InputMethodState.Off);InputMethod.SetIsInputMethodEnabled(TextBoxControl, false);this.TextBoxControl.PreviewTextInput += TextBoxControl_PreviewTextInput;this.TextBoxControl.TextChanged += TextBoxControl_TextChanged;this.TextBoxControl.Unloaded += TextBoxControl_Unloaded;}private void TextBoxControl_Unloaded(object sender, System.Windows.RoutedEventArgs e){this.TextBoxControl.PreviewTextInput -= TextBoxControl_PreviewTextInput;this.TextBoxControl.TextChanged -= TextBoxControl_TextChanged;this.TextBoxControl.Unloaded -= TextBoxControl_Unloaded;}private void TextBoxControl_TextChanged(object sender, TextChangedEventArgs e){//屏蔽非法字符粘贴输入TextChange[] change = new TextChange[e.Changes.Count];e.Changes.CopyTo(change, 0);foreach (TextChange tc in change){if (tc.AddedLength <= 0){continue;}///找出符合表达式要求的字符输入string text = TextBoxControl.Text.Substring(tc.Offset, tc.AddedLength);string t = "";foreach (char c in text){if (!RegexObj.IsMatch(c.ToString())){t += c.ToString();}}TextBoxControl.Text = TextBoxControl.Text.Remove(tc.Offset, tc.AddedLength).Insert(tc.Offset, t);TextBoxControl.CaretIndex = tc.Offset + t.Length;}}private void TextBoxControl_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e){e.Handled = RegexObj.IsMatch(e.Text);}}
}

如何使用

     private void Window_Loaded(object sender, RoutedEventArgs e){///输入字符控制MaskInputTextBoxUtils.CreateObject(this.textBox1, MaskInputTextBoxUtils.LETTERS_AND_NUMBERS).Build();MaskInputTextBoxUtils.CreateObject(this.textBox2, MaskInputTextBoxUtils.NUMBERS_AND_POINT).Build();MaskInputTextBoxUtils.CreateObject(this.textBox3, MaskInputTextBoxUtils.NUMBERS).Build();}

WPF TextBox 允许输入数字及字母的工具类相关推荐

  1. WPF TextBox只能输入数字

    关于WPF TextBox只能输入数字并不是一个很难的功能,网上许多的实现方式都是通过将String类型转换为Int32类型来进行判断的,自从对了Clr Via C#这本书以后就对拆装箱操作产生了恐惧 ...

  2. WPF TextBox 只能输入数字,并限制输入大小

    /// <summary>/// 文本框文本输入事件/// </summary>private void txt_PreviewTextInput(object sender, ...

  3. C# WPF下限制TextBox只输入数字、小数点、删除等键

    C#中限制TextBox只输入数字和小数点的方法不止一种,有正则表达. ASCII码,还有通过Key和ModifierKeys的.这里讲讲通过Key和ModifierKeys来进行输入限制. Key是 ...

  4. 限制文本框(TextBox)只能输入数字(VB6代码)

    在一些要求只允许输入数值的场合,就用得上了. 基本思路是,先在文本框的keyPress事件里过滤键盘输入,再使用子类化将粘贴剪切等剪贴板操作吃掉. 窗体frmMain.frm内代码(窗体包含一个文本框 ...

  5. 用Jquery控制文本框只能输入数字和字母及jquery自定义方法$.fn

    封装成onlyNum(),onlyAlpha()和onlyNumAlpha()3个Jquery扩展方法,方便复用,由于里面一些JS代码涉及到了"禁用输入法,获取剪切板的内容",而& ...

  6. 计算机符号大写怎么退出,如何输入数字,字母 和 回车换行符,大写字母锁定输入模式怎么退出...

    如何输入数字,字母 和 回车换行符,大写字母锁定输入模式怎么退出 1234笔画输入法 - 使用帮助 如何输入数字,字母: 如果你开启了大键盘输入,可以按Shift键,切换中英文输入模式:就可以输入:数 ...

  7. c语言把数字转换为字母,c语言输入数字变成字母

    本文收集整理关于c语言输入数字变成字母的相关议题,使用内容导航快速到达. 内容导航: Q1:c语言输入数字输出字母代码求解释 void main() { int a[100],n,i;定义一个整数数组 ...

  8. javascript实现文本框只能输入数字和字母

    以前曾经用javascript写过验证文本框只能输入小数(需要保留两位小数点)的例子,记得主要是通过判断eventkey或evencode来实现的,最经接手别人的项目要增加对文本框进行验证,只能输入数 ...

  9. 输入数字或字母间隙变大

    在我们输入数字或字母时可能会出现如图所示情况,可使用 Shift+空格键 切换回,如果未解决,请找到你的输入法,看看上面有没有圆形的图案,如果有的话,点击圆形图案改成半月型图案,把全角模式(一个字符占 ...

最新文章

  1. 【OpenCV 4开发详解】直方图操作
  2. 简单介绍redis分布式锁解决表单重复提交的问题
  3. python 帮助文档,撰写函数文档,并查看函数文档
  4. moss管理中心崩溃之解决
  5. undefined reference to symbol ‘_ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE‘
  6. 2.2.python正则表达式
  7. 上网登录窗不弹出_配置 Windows XP 正常上网(TLS HTTPS),连接到 NAS
  8. redisson的锁的类型_你知道吗?大家都在使用Redisson实现分布式锁了!!
  9. linux0.11中断描述符,Linux 0.11总结
  10. eclipse + mapxtreme 代码示例1
  11. 原来PC界面临洗牌的背后原因是因为存储
  12. DropDownList 实现分页不包含选择值
  13. 【首发】'k4' 宏病毒专杀 原创新型excel宏病毒专杀工具
  14. http接口开发几种工具简单介绍
  15. selenium+phantomjs截长图踩坑
  16. Rayman的绝顶之路——Leetcode每日一题打卡18
  17. 如何在linux下批量压缩图片
  18. Codeforces 918D - MADMAX
  19. 网页动画--鲜花爱心表白动画
  20. ES6——Promise笔记

热门文章

  1. 免费备份软件简介及对比
  2. oracle 将包赋权给用户,oracle数据库如何创建用户和角色,并给其赋权?
  3. 淘宝店铺被投诉怎么办?教你如何处理,你是否有这样的经历
  4. 10 个 Python 脚本来自动化你的日常任务
  5. 杰里·桑德斯( Jerry Sanders ): AMD 创始人、主席、前 CEO
  6. 移动卡(非全球通)欠费停机3个月后自动销号无影响
  7. 新版凯立德地图“减肥”定制方法
  8. 如何在校外免费使用知网
  9. WebMatrix开发ASP.NET试用手记
  10. java上传图片 文件损坏_Java Servlet图像上传损坏(灰色底部)