WPF限制TextBox中不能输入特殊字符(所有中英文特殊符号)

WPF限制TextBox中不能输入特殊字符(所有中英文特殊符号)

转载请注明出处。

因为最近的一个项目中有些地方的TextBox要做输入限制,不允许输入特殊字符,然后网上查了一下好像也没有特别好的解决方法。因为WPF中文输入法下的e.Key一直都是ImeProcessed,然后在KeyDown和PreviewKeyDown下判断的话,尝试了很多方法也无法屏蔽中文输入法下主键盘上的特殊符号,所以只能折中使用下面这种方法。(搜狗输入法)
原理:使用正则表达式检测输入的Key是否为中英文特殊字符,如果是则删除该字符。

		/// <summary>
        /// 禁用所有中英文特殊字符(***中文字符微软拼音输入法下有点问题***)
        /// </summary>
        /// <param name="textBox"></param>
        public static void ForbidSpechars(System.Windows.Controls.TextBox textBox)
        {
            if (Regex.IsMatch(textBox.Text.Trim(), @"((?=[\x21-\x7e]+)[^A-Za-z0-9])") 
               || Regex.IsMatch(textBox.Text.Trim(), @"[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|
                \uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|
                \u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5|\u00b7]"))
            {  
                textBox.Text = textBox.Text.Substring(0,textBox.Text.Length-1);
                textBox.SelectionStart = textBox.Text.Length;
            }
        }

		//调用方法
		private void TextChanged(object sender, TextChangedEventArgs e)
        {
            CommonTool.ForbidSpechars(textBox);
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值