2016-08-12 8 views
0

VBG에서 텍스트 파일을 사용하여 DataGrid를로드하는 프로그램이 있지만 속도가 매우 느리고 코드가 많습니다. 텍스트 파일에서 많은 줄 가져 오기가 있습니다.vb.net을 사용하여 100k 행의 텍스트 파일에서 쉽고 빠르게로드 DataGrid

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