Vb.net 如何添加datagridview行

Vb.net 如何添加datagridview行,vb.net,datagridview,Vb.net,Datagridview,我得到了这个错误,“索引超出了范围。必须是非负的并且小于集合的大小。”我认为原因是我没有行,我在其中放置了一个值 这是正确的吗 DataGridView2.Rows.Add(New String() {0}) 基本上,我所做的是将一组数据分组并将其复制到另一个表中 For j As Integer = 1 To 29 Step 1 Dim DGV2Max1 As New DataGridViewTextBoxColumn DGV2Max1.DataPropertyName =

我得到了这个错误,“索引超出了范围。必须是非负的并且小于集合的大小。”我认为原因是我没有行,我在其中放置了一个值

这是正确的吗

DataGridView2.Rows.Add(New String() {0})
基本上,我所做的是将一组数据分组并将其复制到另一个表中

For j As Integer = 1 To 29 Step 1
    Dim DGV2Max1 As New DataGridViewTextBoxColumn
    DGV2Max1.DataPropertyName = "Max" & j
    DGV2Max1.HeaderText = "Max" & j
    DGV2Max1.Name = "Max" & j
    DataGridView2.Columns.Add(DGV2Max1)
Next

For j As Integer = 1 To 29 Step 1
    For i As Integer = 0 To DataGridView1.RowCount - 1 Step 1
        If DataGridView1.Rows(i).Cells("Group").Value = j Then
         DataGridView2.Rows.Add(New String() {0})
         DataGridView2.Rows(i).Cells("Max" & j).Value = DataGridView1.Rows(i).Cells("Group").Value
        End If
    Next
Next

您正试图通过
i
访问每个DataGridView中相同编号的行。如果在每次迭代中都没有将行添加到
DataGridView2
中,这将不起作用

DataGridView2
中查找最后一行,而不是尝试在每一行中使用同一行,使用该行:

For j As Integer = 1 To 29 Step 1
    For i As Integer = 0 To DataGridView1.RowCount - 1 Step 1
        If DataGridView1.Rows(i).Cells("Group").Value = j Then
            DataGridView2.Rows.Add(New String() {0})
            DataGridView2.Rows(DataGridView2.Rows.Count - 1).Cells("Max" & j).Value = DataGridView1.Rows(i).Cells("Group").Value
        End If
    Next
Next

您正试图通过
i
访问每个DataGridView中相同编号的行。如果在每次迭代中都没有将行添加到
DataGridView2
中,这将不起作用

DataGridView2
中查找最后一行,而不是尝试在每一行中使用同一行,使用该行:

For j As Integer = 1 To 29 Step 1
    For i As Integer = 0 To DataGridView1.RowCount - 1 Step 1
        If DataGridView1.Rows(i).Cells("Group").Value = j Then
            DataGridView2.Rows.Add(New String() {0})
            DataGridView2.Rows(DataGridView2.Rows.Count - 1).Cells("Max" & j).Value = DataGridView1.Rows(i).Cells("Group").Value
        End If
    Next
Next
这是我的最终代码

 Dim dgv2 As Integer = 0
    For j As Integer = 1 To 29 Step 1
        For i As Integer = 0 To DataGridView1.RowCount - 1 Step 1
            If DataGridView1.Rows(i).Cells("Group").Value = j Then
                DataGridView2.Rows.Add(New String() {0})
                DataGridView2.Rows(dgv2).Cells("Max" & j).Value = DataGridView1.Rows(i).Cells("X_Pitch").Value
                dgv2 += 1
            End If
        Next
    Next
这是我的最终代码

 Dim dgv2 As Integer = 0
    For j As Integer = 1 To 29 Step 1
        For i As Integer = 0 To DataGridView1.RowCount - 1 Step 1
            If DataGridView1.Rows(i).Cells("Group").Value = j Then
                DataGridView2.Rows.Add(New String() {0})
                DataGridView2.Rows(dgv2).Cells("Max" & j).Value = DataGridView1.Rows(i).Cells("X_Pitch").Value
                dgv2 += 1
            End If
        Next
    Next

在DataGridView2.Rows(i).Cells(“Max”&j).Value=DataGridView1.Rows(i).Cells(“Group”).Value中,表示错误在哪一行?您没有
单元格或
行。检查(调试)DataGridView2
并查询
行数
。如果有
,请检查一行是否有
单元格
您是正确的,我的错。我为dgv 2声明了另一个循环。它说错误在哪一行?在DataGridView2.Rows(I).Cells(“Max”&j).Value=DataGridView1.Rows(I).Cells(“Group”).Value您没有
Cells
Rows
。检查(调试)DataGridView2
并查询
行数
。如果有
,请检查一行是否有
单元格
您是正确的,我的错。我为dgv2声明了另一个循环。