【问题标题】:Numeric Comparison of DataGridView Cell Value Evaluates IncorrectlyDataGridView 单元格值的数值比较计算不正确
【发布时间】:2015-07-28 08:02:33
【问题描述】:

如果温度 >=7,我想在 datagridview 单元格上添加背景颜色。

我正在使用下面的代码,它在 7.01 到 9.99 的温度下工作正常,但如果温度为 10.01 及以上,则不显示背景颜色。感谢任何帮助。

Private Sub ReeferDGridview_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles ReeferDGridview.CellFormatting
    If e.RowIndex >= 0 AndAlso e.ColumnIndex = Me.ReeferDGridview.Columns("Temperature").Index Then
        If e.Value IsNot Nothing Then

            Dim LStatus As String = e.Value.ToString

            Select Case LStatus
                Case Is >= 7
                    Me.ReeferDGridview.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.Maroon
                    Me.ReeferDGridview.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.White
                Case Else
                    Me.ReeferDGridview.Rows(e.RowIndex).DefaultCellStyle.BackColor = Nothing
                    Me.ReeferDGridview.Rows(e.RowIndex).DefaultCellStyle.ForeColor = Color.Black

            End Select

        End If
    End If

End Sub

【问题讨论】:

  • Switch Option Strict On - 这将引导您解决代码中的错误
  • 我已经 Switch Option Strict On 还是同样的问题。

标签: .net vb.net datagridview casting case-statement


【解决方案1】:

您的问题在于您将网格中的数值放入String 变量中,然后使用它与Case 语句中的数值进行比较。

重要提示:如果您将Option Strict 切换为On,您的代码将无法编译,因为它会提醒您正在执行此操作。

因此,当您的代码运行时,它实际上是将一个字符串与另一个字符串进行比较。 >(大于)运算符将按字母顺序或字符代码值顺序进行测试(取决于选项比较设置)

所以你的代码实际上是这样做的

"9.99" > "7" 'evaluates to True
"10" > "7" 'evaluates to False

要解决此问题,您只需为 LStatus 使用数字类型:

Dim LStatus As Single = CSng(e.Value.ToString)

【讨论】:

    【解决方案2】:

    它现在正在工作。我添加以下代码:

    Dim LStatus As String = e.Value.ToString
    Dim number As Double
    Double.TryParse(LStatus, number)
    

    【讨论】:

    • 您无缘无故地进行了额外的转换。使用Dim number As Double = DirectCast(e.Value, Double)。因为你知道Cell.Value的原始类型
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多