📜  wpf 仅数字文本框 - C# (1)

📅  最后修改于: 2023-12-03 14:48:34.798000             🧑  作者: Mango

WPF 仅数字文本框 - C#

在 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 中找到。