【问题标题】:Transfering Rows Between DataGridViews Across 2 Different Forms In VB.NET在 VB.NET 中跨 2 个不同表单在 DataGridViews 之间传输行
【发布时间】:2014-05-16 05:18:23
【问题描述】:

第一次发帖。 所以我在 VB.NET 的 Visual Studio 2013 中制作这个程序

假设我有两种形式:

Form1 和 Form2,在 Form1 上我有 DataGridView1,在 Form 2 上我有 DataGridView2

两个数据网格具有相同的列。

如何在 Form1 上的按钮的单击事件中从 DataGridView1 中获取我当前关注/选择的行中的所有数据,以将其传输到 Form2 上的 DataGridView2。

我正在尝试做的事情的图片。

如果有人能帮我解决这个问题,我将不胜感激。谢谢

【问题讨论】:

    标签: .net vb.net winforms datagridview transfer


    【解决方案1】:

    感谢大家的回复,但我最终这样做了:

    Private Sub searchPartsDataGridView_CellContentClicked(sender As Object, e As DataGridViewCellEventArgs) Handles searchPartsDataGridView.CellContentDoubleClick
        Dim colName As String = searchPartsDataGridView.Columns(e.ColumnIndex).Name()
        Dim rowIndex = searchPartsDataGridView.CurrentRow.Index
        If colName = "ITEMNO" Then
            formPartsRequest.partsRequestItemsDataGridView.Rows.Add(searchPartsDataGridView.Rows(rowIndex).Cells("ITEMNO").Value, searchPartsDataGridView.Rows(rowIndex).Cells("DESC").Value)
        End If
    End Sub
    

    不确定这是否是最好的方法,或者它是否是良好的编码实践,但它似乎工作正常并且符合我的目的。谢谢

    【讨论】:

      【解决方案2】:

      首先,我们必须知道您是否在使用数据绑定 DataGridView。

      如果数据绑定:

      Form1:

      dim dt as new DataTable()
      
      // Fetch data from DB and assign it to DataSource.
      Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
      
          // Run query to fetch data
          // dt = GetTableByRunningQuery    
      
          dataGridView1.DataSource = dt
      
      End Sub
      
      Private Sub btnTransfer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
              Dim frm2 as new Form2()
              frm2.dataSource = dt
              frm2.Show()
      End Sub
      

      Form2:

      Public dataSource as Object
      Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
      
          dataGridView1.DataSource = dataSource
      
      End Sub
      

      如果不是数据绑定:

      Form1:

      Private Sub btnTransfer_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
              Dim frm2 as new Form2()
              frm2.SetRows(dataGridView1.Rows)
              frm2.Show()
      End Sub
      

      Form2:

      Public Sub SetRows(ByVal rows as DataGridViewRowCollection)
         For each row as DataGridViewRow in rows
            Dim newRow as DataGridViewRow = Ctype(row.Clone(), DataGridViewRow)
            dataGridView1.Rows.Add(newRow)
         Next
      End Sub
      

      【讨论】:

        【解决方案3】:

        试试这个,

        'Form1-- following code will be placed in button click
        Dim cells(grd.Columns.Count) As New Object
        For c As int = 0 To grd.Columns.Count
            cells(c) = grd.CurrentRow.Cells(c).Value
        Next
        Dim frm As Form1 = Application.OpenForms("frmName")
        frm.sendRow(cells)
        
        
        'Form2 -- Create a method that will add all cell values from form 1
        Public Sub sendRow(ByVal cells() As Object)
            grd.Rows.Add(cells)
        End Sub
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-25
          • 2016-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多