2016-08-12 37 views
0

我有一個用VB.net創建的程序,其中文本文件用於加載數據網格,但它非常慢,有很多代碼,當有很多從文本文件導入的行。使用vb.net從100k行的文本文件輕鬆快速地加載數據網格

有沒有更簡單的方法來編碼,所以datagrid加載不是很慢?

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 
+0

你能不能格式化你的代碼示例? –

回答

0

您與用戶界面的互動過多。每次與gridview + textboxes的交互都很昂貴。

你應該做的是從創建一個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 
+0

你的代碼類型是正確的,但是我的數據加載到數據表對於編寫代碼是非常困難的,如果你能修改我的代碼,那麼我很容易解決我的問題。在此先感謝+1 –

+0

不是代碼編寫服務....我們只是在這裏提供建議。我建議你再次從頭開始編寫解析代碼。使用有意義的名稱命名您使用的每個變量,添加註釋和關於文件結構的一些註釋。然後,一旦你開始回到stackoverflow並尋求更多的幫助 – FloatingKiwi

相關問題