c# - 创建只接受数字的 WPF TextBox

标签 c# wpf textbox

<分区>

我想创建一个只接受特定范围内的数值的文本框。 实现此类 TextBox 的最佳方法是什么?

我考虑过派生 TextBox 并覆盖 TextProperty 的验证和强制转换。但是,我不确定如何执行此操作,而且我知道通常不建议派生 WPF 控件。


编辑:
我需要的是一个非常基本的文本框,可以过滤掉所有不是数字的按键。 实现它的最简单方法是处理 TextBox.PreviewTextInput 事件:

private void textBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    int result;
    if (!validateStringAsNumber(e.Text,out result,false))
    {
        e.Handled = true;
    }
}

(validateStringAsNumber 是我主要使用 Int.TryParse 的函数)

一些建议的解决方案可能更好,但对于我需要的简单功能,此解决方案是实现起来最简单、最快捷的解决方案,同时足以满足我的需求。

最佳答案

到目前为止我看到的大多数实现都使用 PreviewTextInput事件来实现正确的掩码行为。 This one继承自 TextBox 和 this one使用附加属性。两者都使用 .Net 的 MaskedTextProvider提供正确的掩码行为,但如果您只想要一个简单的“仅限数字”文本框,则不需要此类。

关于c# - 创建只接受数字的 WPF TextBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1226128/

相关文章:

c# - 使用带有 $ 符号的变量反序列化 JSON

c# - 如何从 DataTemplate 获取代码中的元素

wpf - BindingExpression(路径)错误会影响性能吗?

wpf - 除了 1 个控件外,是否可以对 Canvas /网格上的所有内容进行 ScaleTransform 缩放?

c# - 如何通过更改同一 ListView 行中下拉列表的项目来更新文本框中的文本

C# 获取按钮单击 gridview 上每一行的单元格值

c# - 将 float 显示到文本框类型 "number"

c# - 如何调试 PayPalCoreSDK IPN 验证失败?

c# - C# 中的 Double Type 精度不是 15 位吗?

c# - 如何获取XML中元素属性的值