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

时间:2025-02-14 21:03:43

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

转载请注明出处。

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

		/// <summary>
        /// 禁用所有中英文特殊字符(***中文字符微软拼音输入法下有点问题***)
        /// </summary>
        /// <param name="textBox"></param>
        public static void ForbidSpechars( textBox)
        {
            if (((), @"((?=[\x21-\x7e]+)[^A-Za-z0-9])") 
               || ((), @"[\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]"))
            {  
                 = (0,-1);
                 = ;
            }
        }

		//调用方法
		private void TextChanged(object sender, TextChangedEventArgs e)
        {
            (textBox);
        }