【问题标题】:How to Copy Contents in one DataGridview to another form DataGridview如何将一个 DataGridview 中的内容复制到另一个表单 DataGridview
【发布时间】:2019-04-15 15:00:25
【问题描述】:

如何将一个 DataGridview 中的内容复制到另一个表单中的另一个 DataGridview

For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
    With DataGridView1.Rows(i)
        DataGridView2.Rows.Insert(0, .Cells(0).Value, .Cells(1).Value, .Cells(2).Value, .Cells(3).Value)
    End With
Next

【问题讨论】:

  • 您遇到了什么问题?您是否还从源中填充了第一个 DataGridView,如果是这样,您不需要手动将行从第一个添加到第二个。有很多方法可以解决这个问题,但目前帖子缺少信息,请更新,以便我们进一步帮助您。
  • 我将一个文本文件读取到 datagrid 并测试该数据是否存在于数据库中,测试后我想将其复制到另一个具有 datagridview 的表单中,我在其中添加了其他列以从中更新数据库,这个问题我不知道它如何从表单中抓取行并在form1中发送到其他datagridview
  • 你上面的代码有没有抛出异常?或者你期望得到什么,没有得到什么?
  • 恕我直言,您应该有一个可以使用的类,请考虑创建类来保存您阅读的文本文件中的数据。然后可以在您需要的任何地方显示/使用/共享/更新这些数据。对于初学者,我们不知道该文本文件是什么样的,您如何检查数据库以查看该数据是否存在......?这里有很多不确定性,我们不知道如何形成一个好的答案来帮助你。当然,我们可以抛出一个答案,但真的能解决您的问题吗?
  • " 我不知道它会如何从表单中抓取行并将其推送到 form1 中的其他 datagridview" 您需要对其他表单的 reference。涉及哪些形式?哪个表格显示哪个?细节,我的朋友...

标签: vb.net datagridview


【解决方案1】:

参见this answer,它已经涵盖了从一个 DataGridView 复制到另一个的内容。

我获取了代码并使用an online converter 转换为vb.net。

要使此代码正常工作,请创建一个包含两个表单(Form1、Form2)的新项目,每个表单上都有一个 DataGridView(均名为 DataGridView1)。在 Form1 (Button1) 上放置一个按钮。然后将代码粘贴到每个表单各自的代码文件中。

表格1

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        DataGridView1.DataSource = {"A", "B", "C"}.Select(Function(s) New With {.Value = s}).ToList()
        Form2.Show()
    End Sub
    Public Sub Foo()
        Form2.Bar(DataGridView1)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Foo()
    End Sub
End Class

Form2

Public Class Form2
    Public Sub Bar(dgv_org As DataGridView)
        Dim dgv_copy = DataGridView1
        Try
            If dgv_copy.Columns.Count = 0 Then

                For Each dgvc As DataGridViewColumn In dgv_org.Columns
                    dgv_copy.Columns.Add(TryCast(dgvc.Clone(), DataGridViewColumn))
                Next
            End If
            Dim row As DataGridViewRow = New DataGridViewRow()
            For i As Integer = 0 To dgv_org.Rows.Count - 1
                row = CType(dgv_org.Rows(i).Clone(), DataGridViewRow)
                Dim intColIndex As Integer = 0
                For Each cell As DataGridViewCell In dgv_org.Rows(i).Cells
                    row.Cells(intColIndex).Value = cell.Value
                    intColIndex += 1
                Next
                dgv_copy.Rows.Add(row)
            Next
            dgv_copy.AllowUserToAddRows = False
            dgv_copy.Refresh()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class

【讨论】:

  • 所以你发布另一个答案的答案而不是投票关闭每个说的重复,我很困惑......
  • 对此我很抱歉...您是否对“重复”一词感到困惑?
  • 不,我是说您为什么要复制答案以翻译给 OP,而不是投票关闭或仅在评论中提供链接?为什么我们在另一个地方再次需要这段代码,无需道歉:)
  • 因为它不是重复的。 OP 正在询问如何从一个表单的 dgv 复制到另一个表单的 dgv。链接的答案仅处理 dgv 到 dgv。如您所见,此答案与链接的答案非常不同。
  • 明白,但是你正在处理DataGridView的任何一种方式对吗?真正的问题是从DataGridViewDataGridView...对吗? OP 在评论中说my code copy data from datagrid to another in same form.. 我猜也有同样的困惑?
猜你喜欢
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多