Member 14969271 Ответов: 1

Ошибка ВКЛ для цикла при просмотре нескольких csv файлов


Я-новый человек. Vb.net новичок. Я написал программу для просмотра данных нескольких CSV-файлов в datagridview. Я хочу просмотреть несколько значений CSV-файлов в datagridview, однако я могу просмотреть только одно значение после действия multiselect. Я обнаружил, что существует проблема цикла FOR при загрузке значения файлов. Однако я не могу понять, что мне следует изменить в коде.


Может ли кто-нибудь помочь мне решить мою проблему, изменив мой код?

Большое спасибо!!

Что я уже пробовал:

Private Sub btnBrowse_Click(sender As Object, e As EventArgs) Handles btnOpenFile.Click

        OpenFileDialog1.Filter = "csv files|; *.csv"
        OpenFileDialog1.Title = "Select multiple CSV Files"
        OpenFileDialog1.FileName = ""
        OpenFileDialog1.Multiselect = True
        OpenFileDialog1.RestoreDirectory = True

        If (OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
            Try
                'FileName in textbox
                filenames = OpenFileDialog1.FileNames(j)
                Me.txt1.Text += filenames

                'File Data
                For k As Integer = 0 To OpenFileDialog1.filenames.Count - 1

                    If System.IO.File.Exists(filenames) = True Then

                        Dim lines = System.IO.File.ReadAllLines(filenames)

                        'datagridview
                        For Each str As String In lines

                            Dim thecolumns() As String = str.Split(",")
                            Dim newRow As DataRow = dt.NewRow
                            newRow("A") = thecolumns(0)
                            newRow("B") = thecolumns(1)
                            newRow("C") = thecolumns(2)
                            newRow("D") = thecolumns(3)
                            newRow("E") = thecolumns(4)
                            newRow("F") = thecolumns(5)
                            newRow("G") = thecolumns(6)
                            newRow("H") = thecolumns(7)
                            newRow("I") = thecolumns(8)
                            newRow("J") = thecolumns(9)
                            newRow("K") = thecolumns(10)
                            dt.Rows.Add(newRow)
                            DataGridView1.DataSource = dt

                        Next

                    Else
                        txt1.Text = "Error"
                    End If
                Next
            Catch ex As Exception
        'dialog box for error
        MsgBox("Error: " + ex.Message)
            End Try
            'j += 1

            'ListView
            For Each filenames As String In OpenFileDialog1.FileNames
                ListBox1.Items.AddRange(IO.File.ReadAllLines(filenames))
            Next

            'dialogbox
            MsgBox(OpenFileDialog1.FileNames.Count & " files had been loaded")

        End If

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        'datatable format
        With dt
            .Columns.Add("A", System.Type.GetType("System.String"))
            .Columns.Add("B", System.Type.GetType("System.String"))
            .Columns.Add("C", System.Type.GetType("System.String"))
            .Columns.Add("D", System.Type.GetType("System.String"))
            .Columns.Add("E", System.Type.GetType("System.String"))
            .Columns.Add("F", System.Type.GetType("System.String"))
            .Columns.Add("G", System.Type.GetType("System.String"))
            .Columns.Add("H", System.Type.GetType("System.String"))
            .Columns.Add("I", System.Type.GetType("System.String"))
            .Columns.Add("J", System.Type.GetType("System.String"))
            .Columns.Add("K", System.Type.GetType("System.String"))
        End With

    End Sub

    'Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    '    Dim sr As New IO.StreamReader(filenames, System.Text.Encoding.Default)

    '    Dim sline As String = ""

    '    Do
    '        sline = sr.ReadLine
    '        If sline Is Nothing Then Exit Do
    '        Dim thecolumns() As String = sline.Split(",")
    '        Dim newRow As DataRow = dt.NewRow
    '        newRow("A") = thecolumns(0)
    '        newRow("B") = thecolumns(1)
    '        newRow("C") = thecolumns(2)
    '        newRow("D") = thecolumns(3)
    '        newRow("E") = thecolumns(4)
    '        newRow("F") = thecolumns(5)
    '        newRow("G") = thecolumns(6)
    '        newRow("H") = thecolumns(7)
    '        newRow("I") = thecolumns(8)
    '        newRow("J") = thecolumns(9)
    '        newRow("K") = thecolumns(10)
    '        dt.Rows.Add(newRow)
    '        DataGridView1.DataSource = dt

    '    Loop
    '    sr.Close()

    'End Sub
End Class

1 Ответов

Рейтинг:
6

CHill60

Вы устанавливаете источник данных вашего datagridview после каждой отдельной строки которую вы добавили смотрите где у вас есть

dt.Rows.Add(newRow)
DataGridView1.DataSource = dt
Не делай этого. Сначала полностью заполните свой datatable, затем назначьте его DataGridView.Источник данных, например, в
             Next
DataGridView1.DataSource = dt
            Catch ex As Exception
.. etc

Вам нужно понять, как отлаживать свой код - такие вещи становятся яснее, когда вы видите, что происходит
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]