【问题标题】:Pass all rows from a DataGridView on one form to another vb.net将所有行从一个表单上的 DataGridView 传递到另一个 vb.net
【发布时间】:2016-01-07 08:20:21
【问题描述】:

因此,我试图通过 Button Click 上的 DataGridView 将所有行从一个表单传递到另一个表单。从frm_1.vb中的grd_order到frm_2.vb中的grd_invoice

这是我能做到的,因为我还是 vb.net 的新手

frm_1.vb

Private Sub btn_purchase_Click(sender As System.Object, e As System.EventArgs) Handles btn_purchase.Click
      Dim newForm As New frm_2
      newForm.AllRows = grd_order.DataSource
      'what should i put here because the above line is wrong
      newForm.Show()
End Sub

frm_2.vb

Public Class frm_2
      Public Property AllRows As DataGridViewSelectedRowCollection
      'I know that DataGridViewSelectedRowCollection is used for the specific row but what about all rows?

      Private Sub frm_2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      'grd_invoice.DataSource = PassText
      'what should i put here
      End Sub
End Class

【问题讨论】:

标签: .net vb.net winforms datagridview


【解决方案1】:

最简单的方法是将您的第一个DataGridViewDataSource 传递给第二个。

Public Class frm_customer_invoice_a153834
    Public Property Data As Object

    Private Sub Form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.grd_invoice.DataSource = Data
    End Sub
End Class

您还可以将Data 属性定义为DataTable,并将您在第一个表单上的数据表传递给第二个表单。

【讨论】:

  • 好的。大声笑我不知道我们可以传递我们的数据源。谢谢!
  • 刚才查了一下,可以通过DataSource,但是还需要清除grd_order,方便用户下单。所以我使用了这个grd_order.DataSource = Nothing grd_order.Rows.Clear(),然后我清除了第二个表单上的所有内容。有没有机会让两者都发挥作用?
  • 当您将第一个网格的数据源设置为第二个网格的数据源时,它完全是同一个数据表。所以它显示了第二个网格中的所有行和列,并且它使用完全相同的数据表。因此,当您关闭第二个表单时,第二个表单中的所有更改都会显示在您的第一个表单中。
  • 好的,但是在我关闭第二个表单后我有没有机会清除它?
  • 可以,只需使用yourDataTable.Rows.Clear()清除数据表的数据即可。您不需要清除网格行。
【解决方案2】:

试试这个

Private Sub btn_purchase_Click(sender As System.Object, e As System.EventArgs) Handles btn_purchase.Click
      Dim newForm As New frm_2
      For Each col As DataGridViewColumn In grd_order.Columns
        newform.grd_invoice.Columns.Add(col)
      Next
      For Each row as DataGridViewRow in grd_order.rows

       newForm.grd_invoice.Rows.Add(row)

      next
     newForm.Show()
End Sub

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多