首先要在Textbox事件中找到previewinput事件
然后在一个类中把文本框限制的代码都放在里面。
/// <summary> /// 只能输入数字 /// </summary> /// <param name="keyPressE">KeyPressEventArgs内容</param> public static void Number(object sender, TextCompositionEventArgs e) { Regex re = new Regex("[^0-9]+"); if (e.Handled = re.IsMatch(e.Text)) { e.Handled = true; } else { e.Handled = false; } }
/// <summary> /// 只能输入英文字母和数字 /// </summary> /// <param name="keyPressE">KeyPressEventArgs内容</param> public static void InputNumEng(object sender, TextCompositionEventArgs e) { Regex re = new Regex("^[A-Za-z0-9]+$"); if (e.Handled = re.IsMatch(e.Text)) { e.Handled = false; } else { e.Handled = true; } }
/// <summary> /// 只能输入中文汉字 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public static void InputChinese(object sender, TextCompositionEventArgs e) { Regex re = new Regex("^[\u4e00 - \u9fa5]{ 0, }$"); if (e.Handled = re.IsMatch(e.Text)) { e.Handled = false; } else { e.Handled = true; } }
需要注意的是,在WPF框架中空格键是触发不了previewinput事件的,所以上面的只能输入数字的限制中还是可以输入空格的,这个也好解决,我们只需要在textbox的keydown事件中单独把空格键禁用掉就可以了。
private void txtUserName_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key == Key.Space) { e.Handled = true;//不可输入 } }