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);
}