You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP TextBox仅允许输入数字和一个小数点的异常问题排查

问题分析与修复

原代码的问题出在第二个判断逻辑:当文本框已有小数点时,输入数字会触发第二个条件,错误地取消输入。因为此时args.NewText包含原有的小数点,sender.Text.IndexOf('.') > -1也为真,导致args.Cancel = true。

正确的逻辑应该是:

  • 只允许数字和单个小数点
  • 新文本中的小数点数量不能超过1
  • 禁止非数字、非小数点的字符

修复后的代码:

private void TextBox_BeforeTextChanging(TextBox sender, TextBoxBeforeTextChangingEventArgs args)
{
    // 禁止非数字、非小数点的字符
    args.Cancel = args.NewText.Any(c => !char.IsDigit(c) && c != '.');
    
    // 检查新文本中小数点的数量是否超过1
    if (args.NewText.Count(c => c == '.') > 1)
    {
        args.Cancel = true;
    }
}

代码说明

  • 第一行判断:遍历新文本的每个字符,只要存在既不是数字也不是小数点的字符,就取消输入
  • 第二部分统计新文本中的小数点数量,超过1个则取消输入,这样既限制了只能有一个小数点,也不会在已有小数点时阻止输入数字

内容的提问来源于stack exchange,提问作者Wagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:55:23