首页 > 后端开发 > C++ > 如何限制WPF文​​本框以仅接受数字输入?

如何限制WPF文​​本框以仅接受数字输入?

Susan Sarandon
发布: 2025-01-29 14:16:10
原创
759 人浏览过

How to Restrict a WPF TextBox to Accept Only Numeric Input?

在WPF TextBox中仅接受数字输入

WPF应用程序经常需要限制TextBox只接受数字输入,无论是整数还是小数,这对于各种应用都是必要的。

使用PreviewTextInput和IsTextAllowed

为了实现此功能,可以使用PreviewTextInput事件:

<code class="language-xml"><TextBox PreviewTextInput="PreviewTextInput"></TextBox></code>
登录后复制

PreviewTextInput事件处理程序中,可以使用IsTextAllowed方法控制是否允许用户的输入:

<code class="language-csharp">private static readonly Regex _regex = new Regex("[^0-9.-]+"); //匹配不允许的文本的正则表达式
private static bool IsTextAllowed(string text)
{
    return !_regex.IsMatch(text);
}

private void PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    if (!IsTextAllowed(e.Text))
    {
        e.Handled = true;
    }
}</code>
登录后复制

此方法使用正则表达式来验证输入,以满足应用程序的需求。

阻止数据对象粘贴

为了进一步限制输入,可以使用DataObject.Pasting事件:

<code class="language-xml"><TextBox DataObject.Pasting="TextBoxPasting"></TextBox></code>
登录后复制
<code class="language-csharp">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();
    }
}</code>
登录后复制

这确保了粘贴到TextBox中的数据也符合所需的输入条件。 注意,这里将RoutedEventArgs更正为TextCompositionEventArgs,更符合PreviewTextInput事件的参数类型。 对于DataObject.Pasting事件,代码保持不变。

以上是如何限制WPF文​​本框以仅接受数字输入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板