【发布时间】:2023-03-20 02:16:02
【问题描述】:
我想创建一个只接受特定范围内数值的文本框。 实现此类 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 的函数)
一些建议的解决方案可能更好,但对于我需要的简单功能,这个解决方案是最容易和最快实施的,同时足以满足我的需求。
【问题讨论】:
-
在这里查看我关于这个主题的问题:stackoverflow.com/questions/5511/numeric-data-entry-in-wpf
-
或者可能是这样的: private void txtNumeric_PreviewTextInput(object sender, TextCompositionEventArgs e) { if (e.Text.Any(c=>!char.IsDigit(c))) e.Handled = true ; }