Vb.net 在设置datagridview数据源之前,是否必须在datatable中声明列?

Vb.net 在设置datagridview数据源之前,是否必须在datatable中声明列?,vb.net,datagridview,datatable,Vb.net,Datagridview,Datatable,我已经在datagridview中添加了列,但是我需要更快地加载行,现在我这样做的方式是使用datatable,但是它迫使我声明列以便将行添加到表中,但是有没有办法不声明它们,因为它们已经添加到datagridview中,我不想让相同的专栏重复两次 代码如下: Using reader As New StringReader(Clipboard.GetText()) Dim dt As New DataTable While reader.Peek

我已经在datagridview中添加了列,但是我需要更快地加载行,现在我这样做的方式是使用datatable,但是它迫使我声明列以便将行添加到表中,但是有没有办法不声明它们,因为它们已经添加到datagridview中,我不想让相同的专栏重复两次

代码如下:

        Using reader As New StringReader(Clipboard.GetText())
        Dim dt As New DataTable
        While reader.Peek() <> -1
            Dim cp_text As String = reader.ReadLine()
            cp_text = cp_text.Replace(" ", "")
            If Not cp_text = "" Then
                dt.Rows.Add(cp_text, "", "", "", "", True)
                'addinternallink(cp_text, "")
            End If
        End While
        DataGridView1.DataSource = dt
    End Using
    Label3.Text = "Total: " & DataGridView1.RowCount
将读卡器用作新的StringReader(剪贴板.GetText())
Dim dt作为新数据表
而reader.Peek()-1
Dim cp_文本作为字符串=reader.ReadLine()
cp_text=cp_text.Replace(“,”)
如果不是cp_text=“”,则
添加(cp_文本,“”,“”,“”,“”,“”,True)
“addinternallink(cp_文本,”)
如果结束
结束时
DataGridView1.DataSource=dt
终端使用
Label3.Text=“总计:”&DataGridView1.RowCount

无论如何,我想实现的只是以最快的方式添加行。

DGV可以/将基于datatable自动生成列。任何性能问题都很可能与每次一行字符串读取/切掉/替换代码有关。在代码中,您没有定义列名和类型。当您尝试在此表中添加行时,应该会出现异常。因此,是的,您需要在DataTable中定义列,但是当AutoGenerateColumn为true时,您不需要在DataGridView中定义列,因为网格将从数据源获取列名从剪贴板获取字符串似乎是一种非常不可靠的方法。我会重新考虑这一策略。@Steve-事实上,我遇到了一个例外,行无法添加,因为列在表中不存在(类似的情况)。@Proputix-当我使用datatable时,性能实际上很好,问题是我必须在datatable中定义列,由于我已经将它们添加到datagridview,它再次添加相同的列,我不需要,因为这是一个导入函数。