我如何获得一个TextBox只接受WPF中的数字输入?

我希望接受数字和小数点,但没有符号。

我看过使用Windows窗体的NumericUpDown控件的示例,以及Microsoft的NumericUpDown自定义控件的示例。但是到目前为止,似乎NumericUpDown(是否受WPF支持)将无法提供我想要的功能。我的应用程序的设计方式是,没有一个头脑正确的人会想弄乱箭头。在我的应用程序上下文中,它们没有任何实际意义。

因此,我正在寻找一种简单的方法来使标准WPF文本框仅接受我想要的字符。这可能吗?实用吗?

回答:

添加预览文本输入事件。像这样:<TextBox PreviewTextInput="PreviewTextInput" />

然后在该设置内,e.Handled如果不允许输入文本。e.Handled = !IsTextAllowed(e.Text);

我在IsTextAllowed方法中使用了一个简单的正则表达式,以查看是否应该允许他们键入内容。就我而言,我只想允许数字,点和破折号。

private static readonly Regex _regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text

private static bool IsTextAllowed(string text)

{

return !_regex.IsMatch(text);

}

如果你想防止不正确的数据勾起来了的粘贴DataObject.Pasting事件DataObject.Pasting="TextBoxPasting"如在这里(代码摘录):

// Use the DataObject.Pasting Handler 

private void TextBoxPasting(object sender, DataObjectPastingEventArgs e)

{

if (e.DataObject.GetDataPresent(typeof(String)))

{

String text = (String)e.DataObject.GetData(typeof(String));

if (!IsTextAllowed(text))

{

e.CancelCommand();

}

}

else

{

e.CancelCommand();

}

}

以上是 我如何获得一个TextBox只接受WPF中的数字输入? 的全部内容, 来源链接: utcz.com/qa/421006.html

回到顶部