【问题标题】:Easy and fast load datagrid from textfile with 100k rows using vb.net使用 vb.net 从具有 100k 行的文本文件中轻松快速地加载数据网格
【发布时间】:2016-08-12 06:23:47
【问题描述】:

我用VB.net创建了一个程序,其中文本文件用于加载数据网格,但它非常慢,有很多代码,当从文本文件有很多行导入时。

有没有更简单的编码方式,所以数据网格加载不会那么慢?

Private Sub Load_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Load.Click

OpenFileDialog1.Filter = "Text Files|*.txt|All Files|*.*"
    OpenFileDialog1.Title = "Select Text File for Path"
    OpenFileDialog1.FileName = "Select File"
    If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.Ok Then
        txttblnm.Text = OpenFileDialog1.FileName
        txtfilenm.Text = System.IO.Path.GetFileName(txttblnm.Text)
        txtfilenm.Text = txtfilenm.Text.Substring(0, txtfilenm.Text.Length - 4)
        Label7.Text = System.IO.Path.GetDirectoryName(txttblnm.Text)
    End If

    If Len(txtfilenm.Text) = 8 And CheckBox1.CheckState = CheckState.Checked Then
        Dim textfiles() = Directory.GetFiles(Label7.Text, "*.txt")
        For Each file As String In textfiles
            Call dgv1_load()
            Call Access_export()
            Call clear_item()
        Next
    ElseIf Len(txtfilenm.Text) >= 9 Then
        MsgBox("Please Load DATA", MsgBoxStyle.Information, "Load Data Error")
        Exit Sub
    End If
End Sub

【问题讨论】:

  • 您能稍微格式化一下您的代码示例吗?

标签: vb.net datagrid vb.net-2010


【解决方案1】:

您与用户界面的交互过多。与 gridview + 文本框的每次交互都是昂贵的。

您应该首先创建一个 DataTable 并用行数据填充它。

然后在所有加载完成后,将 datagridview.DataSource 设置为该表,所有内容都将只绘制一次。

    Private Function ParseFile(filename As String) As DataTable
        Dim result As New DataTable()
        result.Columns.Add("colname 1 ....")
        result.Columns.Add("colname 2 ....")

        Using inputFile As New StreamReader(filename) 'Open text file

            Do Until inputFile.EndOfStream
                Dim row = result.Rows.Add()
                row(0) = "blah"
            Loop
        End Using
        return result
    End Function

    Private Sub ShowResult()
        dgv1.DataSource = ParseFile(filename)
    End Sub

【讨论】:

  • 您的代码类型是正确的,但是我的特定数据加载到数据表对我来说很难编写代码,如果您能够修改我的代码,那么我很容易解决我的问题。在此先感谢 +1
  • 不是代码编写服务......我们只是在这里提供建议。我建议您从头开始重新编写解析代码。用有意义的名称命名您使用的每个变量,添加 cmets 和一些关于文件结构的注释。然后,一旦您开始使用 stackoverflow 并寻求更多帮助
猜你喜欢
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2013-08-20
  • 2023-01-11
  • 1970-01-01
  • 2015-12-04
  • 1970-01-01
相关资源
最近更新 更多