Vb.net Datagridview行不可见,行选择随机

Vb.net Datagridview行不可见,行选择随机,vb.net,Vb.net,我使用下面的子命令使特定的行不可见,但是当我返回到过滤后的datagridview并尝试循环查看可见的行索引时,它会从列的顶部到列的底部,而不是按顺序(1、2、3…等等) 我可以将过滤器后的当前集设置为最上面的可见行,但这没有什么区别 Private Sub BR_VAL_NO_SHOW() Dim dgv As DataGridView = Me.dgvStockCheck_Available Dim cm1 As CurrencyManager = CType(Bi

我使用下面的子命令使特定的行不可见,但是当我返回到过滤后的datagridview并尝试循环查看可见的行索引时,它会从列的顶部到列的底部,而不是按顺序(1、2、3…等等)

我可以将过滤器后的当前集设置为最上面的可见行,但这没有什么区别

    Private Sub BR_VAL_NO_SHOW()

    Dim dgv As DataGridView = Me.dgvStockCheck_Available
    Dim cm1 As CurrencyManager = CType(BindingContext(dgv.DataSource), CurrencyManager)

    Try
        For i As Integer = 0 To dgv.Rows.Count - 1

            If IsDBNull(dgv.Rows(i).Cells("MATERIAL").Value) Then
                Exit Try
            Else

                If Not dgv.Rows(i).Cells("MATERIAL").Value = "SLAT" Then
                    dgv.CurrentCell = Nothing
                    cm1.SuspendBinding()
                    dgv.Rows(i).Visible = False
                End If
            End If

        Next
    Catch ex As Exception

    End Try

End Sub

这是完全正常的

将当前单元格的值设置为
NOTHING

但是您可以使用
IsDBNull
来验证哪一个不是相同的东西

不要混淆面向对象编程中“无”的概念 具有DBNull对象的语言。在面向对象编程中 语言,表示没有对对象的引用。 DBNull表示一个未初始化的变量不存在的数据库 列。

资料来源:

因此,一个解决方案可能是只检查是否可见

If dgv.Rows(i).Visible = False Then
    'Not Visible
    Exit Try
Else