Проблема заполнения DataGridView со структурированным массивом - PullRequest
0 голосов
/ 20 апреля 2019

Когда я запускаю свой код, заполняя массив данными из файла журнала csv, DataGridView заполняется пустыми строками.

Я пробовал просто использовать 2-мерный массив, я получаю те же результаты. Я подозреваю, что мне нужно каким-то образом "отобразить" данные ... может быть?

Вот что я сейчас пытаюсь:
Этот первый раздел находится в модуле ..., подпрограмма в коде формы

Public Structure DataBlock

    Public Data As String()

    Public Property xData As String()
        Get
            Return Data
        End Get
        Set(ByVal value As String())
            Data = value
        End Set
    End Property

End Structure

Public DataBlocks(1) As DataBlock
' end of module code
' start of form code
Public Sub test(path)
    Dim i As Integer
    LogData = IO.File.ReadAllLines(path)
    ReDim DataBlocks(UBound(LogData))
    For i = 0 To UBound(LogData)
        DataBlocks(i) = New DataBlock With {.xData = Split(LogData(i), ",")}
    Next
    DataGridView1.DataSource = DataBlocks

End Sub

Я ожидал, что таблица будет заполнена. Я вижу другие примеры, которые работают, но они не используют структурированный массив с массивом в структуре. Я мог бы просто разбить массив на 8 частей (это количество столбцов для файла), но я пока не готов отделиться.

1 Ответ

0 голосов
/ 20 апреля 2019

Ну, это немного глупо, но это работает. Я изменил структуру на класс. Кажется, DataGridView не может обрабатывать массив как тип столбца, поэтому я изменил массив на строку для отображения.

Public Class DataBlock
    Private Data As String()
    Public ReadOnly Property xDataOut As String
        Get
            Return String.Join(", ", Data)
        End Get
    End Property
    Public WriteOnly Property xDataIn As String()
        Set(value As String())
            Data = value
        End Set
    End Property
    Public Sub New(sArray As String())
        xDataIn = sArray
    End Sub
End Class

Public DataBlocks As New List(Of DataBlock)

Public Sub test(path As String)
    Dim Lines = IO.File.ReadAllLines(path)
    For Each line In Lines
        DataBlocks.Add(New DataBlock(line.Split(","c)))
    Next
    DataGridView1.DataSource = DataBlocks
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    test("LogData.txt")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...