DataGridView删除错误

时间:2017-06-21 15:46:16

标签: vb.net winforms datagridview

我想删除DataGridView中的重复值和空白行。 我正在使用以下代码。

Private Sub dgwsil()
  On Error Resume Next
  For i2 As Integer = DataGridView1.RowCount - 1 To 0 Step -1
    If Trim(DataGridView1.Rows(i2).Cells(0).Value.ToString()) = "" Then
      DataGridView1.Rows.RemoveAt(i2)
    End If
  Next

  Dim numberOfRows = DataGridView1.Rows.Count
  Dim i As Integer = 0
  While i < numberOfRows - 2
    For ii As Integer = (numberOfRows - 1) To (i + 1) Step -1
      If DataGridView1.Rows(i).Cells(0).Value.ToString() = DataGridView1.Rows(ii).Cells(0).Value.ToString() Then
        DataGridView1.Rows.Remove(DataGridView1.Rows(ii))
        numberOfRows -= 1
      End If
    Next
    i += 1
  End While
End Sub

代码有时可以正常工作。

like in this photo

但有时会出错

like this

我该如何解决这个问题?或者您使用的代码是什么?

1 个答案:

答案 0 :(得分:0)

看起来你正在用VBA心态来解决这个问题。在VBA中,您通常会直接操纵datagridviewOn Error Resume Next行可以接受。

在VB.NET中,你不想做其中任何一件事。您的datagridview应绑定到一组信息。该集合可以是datatablearray或任何类型的集合。因此,不是使用循环来直接操作datagridview,而是循环通过支持集合,或者更好地LINQ通过集合并根据需要对其进行操作。有大量的教程解释了你可能需要的一切,所以谷歌搜索如何绑定datatabledatagridview应该得到你需要的。

我还建议调查Try...Catch...Finally...结构。您应该使用它来处理可能来自您的代码的任何错误。