Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net如何合并列_Vb.net_Datagridview_Datagrid - Fatal编程技术网

Vb.net如何合并列

Vb.net如何合并列,vb.net,datagridview,datagrid,Vb.net,Datagridview,Datagrid,我的datagridview有问题。如果第2列和第3列相同,如何合并行 例如: Col 1| Col2| Col3| 2| Mars|Regular 3| Mars|Regular 如何将其合并为一列?类似的内容应该可以回答您的问题: Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ' Populate manually your

我的datagridview有问题。如果第2列和第3列相同,如何合并行

例如:

Col 1| Col2| Col3|

    2| Mars|Regular

    3| Mars|Regular 

如何将其合并为一列?

类似的内容应该可以回答您的问题:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    ' Populate manually your datagridview
    Dim row As Object() = New Object() {2, "Mars", "Regular"}
    dtgv.Rows.Add(row)
    row = New Object() {3, "Mars", "Regular"}
    dtgv.Rows.Add(row)
    row = New Object() {10, "Earth", "Regular"}
    dtgv.Rows.Add(row)

    ' Try to merge rows
    For i = 0 To dtgv.RowCount - 1
        merge(i)
    Next
End Sub

Public Sub merge(ByVal row As Integer)
    Dim planet As Boolean = False
    Dim regularity As Boolean = False

    ' If planets are identicals
    If dtgv.Rows(row).Cells(1).Value = dtgv.Rows(row + 1).Cells(1).Value Then
        planet = True
    End If

    ' Same
    If dtgv.Rows(row).Cells(2).Value = dtgv.Rows(row + 1).Cells(2).Value Then
        regularity = True
    End If

    ' Merge
    If planet = True And regularity = True Then
        ' Sum up index
        dtgv.Rows(row).Cells(0).Value = dtgv.Rows(row).Cells(0).Value + dtgv.Rows(row + 1).Cells(0).Value
        ' Remove one row
        dtgv.Rows.RemoveAt(row + 1)
        ' Message to warn there is a merge
        MsgBox("Rows " & row & " and " & row + 1 & " merged !")
    End If
End Sub

只有前两行匹配,因为第三行有不同的行星。

您可以对数据进行排序,测试前一行与当前行的数据,如果匹配,则将其删除。这就是我所做的。我想知道在将值放入datagrid后如何做。将有一个msgbox警告用户您可以创建一个将循环您的行并测试它。当它匹配时,你添加一个带有合并行或值的MsgBox,如果它不匹配,继续下一行。我不知道Merging的代码。你不明白我说的话。这不是一个合并,它只会发现两行是否相同,并在这种情况下删除一行。您知道您可以通过x,y来寻址dgv单元格吗?e、 g.
dtgv(colNum,rowNum)。value
可能返回
Nothing
您可以通过添加“”或添加0来避免测试,例如
dtgv(colNum,rowNum)。value&“”
可以节省大量键入。