指定网格值 VB.NET 的值范围
Posted
技术标签:
【中文标题】指定网格值 VB.NET 的值范围【英文标题】:Specifying Value Range for Grid Value VB.NET 【发布时间】:2022-01-04 12:45:01 【问题描述】:如何避免收到此警告?如果警告和代码保持如下,软件会抛出运行时错误吗?编写此代码的更好方法是什么?由于我不能对网格值使用最小值和最大值,因此我只能使用 .Value ,因此我编写了以下代码。
Select Case CSng(dgv_config.Item(dgv_config.Columns("p").Index, rowindex).Value)
Case 1 To 150
#Disable Warning BC42019 ' Operands of type Object used for operator
If dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value > 400 Then
#Enable Warning BC42019 ' Operands of type Object used for operator
dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value = 400
End If
#Disable Warning BC42019 ' Operands of type Object used for operator
If dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value < 50 Then
#Enable Warning BC42019 ' Operands of type Object used for operator
dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value = 50
End If
End Select
【问题讨论】:
好吧,我猜 Option strict 现在已关闭,我建议在继续之前将其打开(它应该几乎总是打开,很多指南已经解释了该过程)。实际问题虽然,它确实为您解释了它。 dgv 中的值是 object 类型,您将其与数字类型进行比较。简单的答案是将 dvg 值的结果类型转换为适当的类型 【参考方案1】:Hursey 的评论是正确的,类型转换会删除警告。
为了解释,我将重写你的一些代码以使其更清晰,从这里...
If dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value > 400 Then
dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value = 400
End If
...到这个:
Dim columnIndex As Integer = dgv_config.Columns("tsamp").Index
Dim cellValue As Object = dgv_config.Item(columnIndex, rowindex).Value
If cellValue > 400 Then
dgv_config.Item(columnIndex, rowindex).Value = 400
End If
注意cellValue
的类型是Object。那是因为DataGridViewCell.Value
属性返回一个对象。这样做的原因是因为单元格中可以有不同类型的内容,例如字符串或整数。您的列将包含一个整数,但编译器不知道这一点。
在我的 Visual Studio 中,上面的代码 sn-ps 显示了您遇到的警告:BC42019: Operands of type Object used for operator '<'; runtime errors could occur.
为了消除警告,我们添加了一个类型转换,例如 Cint()
:If CInt(dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value) > 400 Then
或者用Integer.Parse()
告诉编译器我们需要一个整数的另一种方式。If Integer.Parse(dgv_config.Item(dgv_config.Columns("tsamp").Index, rowindex).Value) > 400 Then
顺便说一句,在我启用“后期绑定”之前,我的 Visual Studio 中不会出现警告;项目设置 - 编译页面上的运行时警告配置调用可能会失败。
【讨论】:
以上是关于指定网格值 VB.NET 的值范围的主要内容,如果未能解决你的问题,请参考以下文章
使用 VB.Net 将 excel 中的特定列值导出到数据网格
Python matplotlib更改超出颜色条范围的值的默认颜色