📅  最后修改于: 2023-12-03 14:48:34.798000             🧑  作者: Mango
在 WPF 中,我们经常需要在用户输入时限制输入的内容,例如仅允许输入数字。本文将介绍如何创建一个仅允许输入数字的文本框控件。
首先我们需要创建一个自定义的文本框控件,代码如下:
public class NumberTextBox : TextBox
{
public NumberTextBox()
{
PreviewTextInput += NumberTextBox_PreviewTextInput;
}
private static readonly Regex _regex = new Regex("[^0-9]+");
private void NumberTextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = _regex.IsMatch(e.Text);
}
}
我们继承 WPF 中的 TextBox 控件,并重写构造函数。在构造函数中,我们订阅了 PreviewTextInput 事件。这个事件会在用户输入字符之前触发,我们可以在这个事件中检查用户输入的内容,并决定是否允许输入。
在这个控件中,我们使用了一个正则表达式来匹配是否为数字。如果输入的字符不是数字,我们就将事件标记为已处理,并不允许用户输入该字符。
使用我们创建的 NumberTextBox 控件非常简单,只需要在 XAML 中使用即可。例如:
<StackPanel>
<TextBlock Text="请输入数字:" />
<local:NumberTextBox Width="200" Height="30" />
</StackPanel>
其中,local
前缀是指向我们自定义控件所在命名空间的前缀。注意,我们需要在窗口或页面的 XAML 文件中引用该命名空间。
xmlns:local="clr-namespace:WpfApp1"
通过以上方法,我们可以很简单地创建一个仅允许输入数字的文本框控件。除了数字,我们也可以根据需要限制用户输入其他的内容。
完整代码及示例可以在 GitHub 中找到。