【问题标题】:Get max value from RichTextBox从 RichTextBox 获取最大值
【发布时间】:2025-12-28 09:40:06
【问题描述】:

我很难从富文本框中获取正确的最大值。我尝试使用 3 种不同的方法来找到最大值,并且都以相同的方式工作。对于这个示例,我正在使用 GPS 速度数据。所以我将速度 1 x 1 添加到富文本框中。我遇到的问题在某些情况下使我的最大速度值为 11.3 或 11.4。

例如,如果速度大于 12.0,它可以正常工作。如果速度低于 11.0,则可以正常工作。如果速度高于(或开始高于)11.5,但随后下降到低于 11.5,则报告的最大值将是这些 11.3 或 11.4 数字之一

看起来我的代码确实认为 11.3 是最大的数字。

我尝试了 Richtextbox.lines.Max(),我尝试将数据添加到列表中,还尝试从 RTB 添加到数组并使用以下方法。

   Private Sub CheckMaxSpeed()
        Dim speed
        If MaxSpeedRTB.Text = "" Then
            MaxSpeedtxt.Text = "N/A"
            MaxSpeedtxt.Text = "N/A"
            Exit Sub
        Else
            'speed = MaxSpeedRTB.Lines.Max()
            'Dim speedlist As List(Of String) = MaxSpeedRTB.Lines.ToList
            Dim myArr As String() = MaxSpeedRTB.Lines
            speed = myArr.Max()
            'speed = speedlist.Max
            speed *= 1.15078
            speed = Math.Round(speed, 1)
            If speed < 0.4 Then
                speed = "0.0"
            End If
            MaxSpeedtxt.Text = speed & " MPH"
            MaxSpeedRTB.Clear()
            MaxSpeedCom = False
        End If

【问题讨论】:

    标签: vb.net richtextbox


    【解决方案1】:

    针对string 调用Max 是灾难的根源。

    相反,尝试将所有行解析为Single,然后针对它调用Max

    Dim lines = RichTextBox1.Lines
    
    Dim values = New List(Of Single)
    
    For Each line As String In lines
        Dim result As Single
        Dim tryParse = Single.TryParse(line, result)
        If tryParse Then
            values.Add(result)
        End If
    Next
    
    Dim max = values.Max()
    

    结果:

    For the following lines in RichTextBox:
    11.1
    11.123
    Max = 11.123
    

    【讨论】: