faiqaa Ответов: 1

Как читать данные текстового файла и отображать их в datagridview с помощью VB.NET


В своем проекте я использую сетку данных для отображения информации, которая была сохранена в текстиле (информация, связанная с запасами). Я использовал приведенный ниже код, и ошибка, которая показывает, что "индекс был за пределами массива". У кого-нибудь есть предложения?
Это было бы очень ценно.

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

Dim fname As String = "C:\Users\Windows 7 User\Desktop\Stock.txt"
        Dim colsexpected As Integer = 8
        Dim thereader As New StreamReader(fname, Encoding.Default)
        Dim sline As String
        Do
            sline = thereader.ReadLine
            If sline Is Nothing Then Exit Do
            Dim words() As String = sline.Split(",")
            DataGridView1.Rows.Add("")
            For ix As Integer = 0 To 7
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(ix).Value = words(ix)

            Next

        Loop

        thereader.Close()

Kenneth Haugland

Если это WPF, я могу помочь, но это похоже на WinFroms? Так ли это?

faiqaa

Да, это WinForms.

Richard MacCutchan

Что - у меня ничего не получается." значит?

faiqaa

Я имел в виду, что я смотрел в интернете на другие решения, но ни одно из них не помогло мне в решении моей проблемы.
Спасибо

Richard MacCutchan

Какой вопрос?

faiqaa

Проблема в том, что в настоящее время я не могу отобразить данные, сохраненные в текстовом файле, в сетку данных.

Valery Possoz

Нужно кое-что проверить:
- вы создали столбцы сетки? если они не существуют, это вызовет исключение.
- Странное у тебя распределение ценностей. Если данные не соответствуют ожиданиям кода, произойдет сбой.
- ProductName-это строка, но вы приводите ее как целое число, и если у вас есть строка в текстовом файле, она рухнет.
- Количество-это целое число, но вы не бросаете его. Скорее всего, это вызовет исключение.

использование отладчика будет очевидным, это хорошая возможность узнать об обработке исключений.

Как только вы решите эту проблему, она будет работать.

faiqaa

Привет, сэр, и да, я использую столбцы сетки (4), я пробовал использовать этот код:

Dim fname As String = "C:\Users\Windows 7. User\Desktop\Stock.txt"
Dim colsexpected как целое число = 4
Dim thereader как новый StreamReader(fname, Encoding.По умолчанию)
Тусклый sline как строка
Делать
слайн = thereader.С readline
Если слайн ничего тогда выход делать
Dim words() As String = sline.Расщеплять(",")
DataGridView1.Строк.Добавить("")
Для ix как целого числа = от 0 до 3
DataGridView1.Rows(DataGridView1.Rows.Граф - 1).Ячейки(ix).значение = слова(ix)

Следующий

Петля

вот и все.Закрывать()

Однако это все еще дает мне ошибку "индекс был за пределами массива"

Richard Deeming

Наиболее вероятная проблема заключается в том, что одна или несколько строк в вашем текстовом файле не содержат трех запятых. Например, в конце файла может быть пустая строка.

faiqaa

Привет сэр,
какие изменения вы бы мне порекомендовали? хм, пустая строка в конце? дело в том, что мне нужно сохранить информацию о запасах, чтобы я продолжал добавлять и удалять ее, отображать ее в таблице данных позже, я не знаю, как справиться с этой проблемой.

Richard Deeming

Проверьте длину words массив. Ограничьте свой ix цикл минимальной длины массива или количество столбцов в элементе управления DataGrid.