使用新的数据网格视图VB将数据从数据网格视图复制到新表单

时间:2013-08-16 22:10:14

标签: vb.net winforms forms datagridview

我正在使用Visual Studio 2010.我创建了一个使用多种表单的新VB窗体应用程序。

在其中一个表单(form2)上,我根据用户在form1上选择的项目创建了一个datagridview。

最终用户可以在datagridvew上添加信息,然后转到第三种形式(form3)。在第三个表单中,我想将与form2上的datagrid的前三列相同的信息复制到一个新的数据网格中。

要从form1上的列表框中复制项目,我使用类似于以下内容的代码:

For Each Feature As Object in form1.listbox1.SelectedItems
Me.DatagridView(Col, Row).Value = DirectCast(CustomerFeature, DataRowView)("Feature").ToString()
Row +=1
Next

我想用:

For Each row As DGVRow In form2.DatagridView.Rows
    'add information to the new datagrid
Next

在我的Form3上。但是,当我尝试访问form2数据时,它不会显示在intellisense中,也不会让我手动输入信息。当我尝试运行程序时,我得到:

“错误1对非共享成员的引用需要对象引用。”

我甚至无法访问我在该表单上声明的公共变量。我应该提一下使用:

调用form2
Private Sub BTN_Next_Click(sender As System.Object, e As System.EventArgs) Handles BTN_Next.Click
        Dim frm_PI_01 As New form2(PIMethod, StartTime, TheUser, TheComputer)
        frm_PI_01.ShowDialog()
    End Sub

并且新方法使用:

Public Sub New(ByVal PIMethod As String, ByVal StartTime As Date, ByVal TheUser As String, ByVal TheComputer As String)
    ' This call is required by the designer.
    InitializeComponent()
    PI_Method = PIMethod
    Start_Time = StartTime
    The_User = TheUser
    The_Computer = TheComputer
End Sub

在onload事件期间填充数据网格。

1 个答案:

答案 0 :(得分:0)

"Error 1 Reference to a non-shared member requires an object reference."

正如此消息所示:您需要form2的实例 - 使用form2 sub创建的New类型的对象,您在BTN_Next_Click内创建。但局部变量frm_PI_01只能在该函数内部使用。

使用班级form2的名称,您只能使用Shared成员或函数/子MSDN Shared members in VB

我的意见是,如果您需要将一些信息/变量从表单传输到另一个,那么在您的情况下(当您在创建表单时只传输一次数据时)使用表单构造函数中的参数。

向您form3构造函数添加另一个参数。例如,你的datagridview的引用(这可能不是很好的做法引用控件到另一种形式,更好地用所需的数据创建一些变量并引用它,但仅举例来说这是最简单的方法):

'Of course create private variable for datagridview
private _dgvForm2 as dataGridView
//Constructor of form3
Public Sub New(dgvForm2 as DataGridView)
    ' This call is required by the designer.
    InitializeComponent()
    Me._dgvForm2 = dgvForm2
End Sub

在此之后,您可以在Load功能...

中使用它