用正则表达式,则输入法为中文时,部分字符还是能输进去的?各位高手有没有好的解决办法,谢谢!
解决方案
1
顶一个![wpf 怎么限制文本框只能输入数字,中文以及英文 wpf 怎么限制文本框只能输入数字,中文以及英文](https://www.codebye.com/wp-content/uploads/2016/07/-383879584-346068430.gif)
![wpf 怎么限制文本框只能输入数字,中文以及英文 wpf 怎么限制文本框只能输入数字,中文以及英文](https://www.codebye.com/wp-content/uploads/2016/07/-383879584-346068430.gif)
5
最好是需要提交数据的时候验证
xxx.Text = Regex.Replace(xxxxx.Text,@”[^a-zA-Z0-9]”,””);
xxx.Text = Regex.Replace(xxxxx.Text,@”[^a-zA-Z0-9]”,””);
3
本人记得回复过,wpf下监控change的事件是什么?反正就是在那个事件里,获取输入框数据,然后进行正则,将不符合条件的字符全部替换掉
1
没必要提示,假如你真觉得要提示,那么你可以比较下替换后字符串的长度和原始长度,不一致就是有不允许的字符
10
/// <summary> /// 只能输入数字 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TxtIndex_KeyDown(object sender, KeyEventArgs e) { TextBox txt = sender as TextBox; //屏蔽非法按键 if ((e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal || e.Key.ToString() == "Tab") { if (txt.Text.Contains(".") && e.Key == Key.Decimal) { e.Handled = true; return; } e.Handled = false; } else if (((e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.OemPeriod) && e.KeyboardDevice.Modifiers != ModifierKeys.Shift) { if (txt.Text.Contains(".") && e.Key == Key.OemPeriod) { e.Handled = true; return; } e.Handled = false; } else { e.Handled = true; } }