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

Select Case仅识别数字首字符问题:TextBox值20被判定为2

问题解决:Select Case仅识别文本框首字符的原因及修复方案

你的问题根源在于直接用字符串和数字进行比较,VB.NET会默认按字符串规则来对比,而不是数值大小,所以像"20"这样的多位数文本,会被当成字符串和数字做字符级别的比较,自然只“识别”首字符了。

具体原因

比如你的代码里Select Case TextStatas.Text,TextStatas.Text是字符串类型,当你写Case >4时,VB会把数字4转换成字符串"4",然后对比"20"和"4":字符串比较是按每个字符的ASCII值依次判断,'2'的ASCII码(50)比'4'(52)小,所以程序会认为"20" < "4",不会匹配第一个Case,而是往下找,最终触发不符合预期的分支。

修复代码

解决方法很简单:先把文本框的内容转换成数值类型(比如整数),再用数值做Select Case判断,同时还要处理文本框内容不是数字的异常情况:

For Each TextStatas In Arr_TextStat
    Dim inputValue As Integer
    ' 尝试将文本转换为整数,转换失败则设为0(可根据需求调整默认值)
    If Not Integer.TryParse(TextStatas.Text, inputValue) Then
        inputValue = 0
    End If
    
    Select Case inputValue
        Case > 4
            TextStatas.BackColor = Color.Green
        Case > 3
            TextStatas.BackColor = Color.GreenYellow
        Case > 2
            TextStatas.BackColor = Color.Gold
        Case > 1
            TextStatas.BackColor = Color.DarkOrange
        Case >= 0
            TextStatas.BackColor = Color.Red
    End Select
Next

为什么另一个表单能正常运行?

大概率是另一个表单的代码里已经隐含了数值转换:比如控件绑定了数值类型的数据源,或者代码里提前把Text转成了数字,所以没有触发字符串比较的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:55:04