WPF开发之限制输入的控件---------转自CDSN
2021-04-26 03:28
标签:str catch hand 表达 wpf cas textinput regex length 原文地址 http://blog.csdn.net/ghosind/article/details/51627601 作者 ghosind 一,正则表达式过滤字符串 二,PreviewTextInput事件 获取textbox 的完整文本,(正常textbox.text是输入前的文本) 但是如果不是在最后方输入 直接加起来就不行了,这里用到CareIndex属性,(当前光标的位置) 但是如果选中一段文字再输入,结果仍然是错误的,所以原作者又用了一个属性SelectionLength,选择文本的长度 最终得到输入后的所有文本的方法终于实现, 三,用正则表达式过滤输入文本,这个网上资料多得很就不抄了,向原作者致敬 WPF开发之限制输入的控件---------转自CDSN 标签:str catch hand 表达 wpf cas textinput regex length 原文地址:http://www.cnblogs.com/nocanstillbb/p/7898574.htmlif (RegexString == null)
{
switch (ConstraintType)
{
case RestrictType.Int: // 整数
RegexString = @"^[-]?([\d]+)?$";
break;
case RestrictType.UInt: // 非负整数
RegexString = @"^[\d]+$";
break;
case RestrictType.Double: // 浮点数
RegexString = @"^[-]?([0-9]+)?[.]?([0-9]+)?$";
break;
case RestrictType.UDouble: // 正非负浮点数
RegexString = @"^[0-9]+[.]?([0-9]+)?$";
break;
case RestrictType.None: // 无限制
default:
RegexString = "";
break;
}
}
if (!Regex.IsMatch(this.Text + e.Text, RegexString))
{
e.Handled = true;
}
if (!Regex.IsMatch(this.Text.Insert(this.CaretIndex, e.Text), RegexString))
{
e.Handled = true;
}
private void PreviewTextInput(object sender, TextCompositionEventArgs e)
{
try
{
if (!Regex.IsMatch(this.Text.Remove(this.CaretIndex,
this.Text.Length >= this.CaretIndex + this.SelectionLength ? this.SelectionLength : 0).
Insert(this.CaretIndex, e.Text), RegexString))
{
e.Handled = true;
}
}
catch (Exception)
{
}
}
文章标题:WPF开发之限制输入的控件---------转自CDSN
文章链接:http://soscw.com/index.php/essay/79650.html