Как динамически поменять строку для изображения в Datagridview? - PullRequest
0 голосов
/ 24 декабря 2011

Salvete! В моей форме окна у меня есть пустой datagridview, который содержит строки, загруженные из CSV-файла. datagridview не имеет начальной коллекции столбцов. В файле CSV есть четыре столбца. В файле csv столбцы 1 и 2 имеют значения true или false. Пока я могу загрузить текст отлично.

Что я хочу сделать, так это изменить строки «true» или «false» на изображение в моих ресурсах (довольно зеленая галочка и красный x).

Я хотел бы оставить текст CSV-файла без изменений, а затем динамически изменять столбцы.

Затем, когда я сохраняю информацию обратно в файл CSV, изображения должны быть преобразованы в текстовые строки для размещения CSV.

Спасибо всем, кто может мне помочь!

1 Ответ

1 голос
/ 25 декабря 2011

Salvete! Хорошо, после некоторой изнурительной агонии, я понял это.

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

Когда я загрузил CSV, я создал два дополнительных столбца изображения и установил их соответствующие значения данных как невидимые.

Позже, когда я сохраняю файл csv, я пропускаю строки изображения и сохраняю то, что находится в строках данных.

Private Sub ImportCSV(ByVal whatgrid As DataGridView, ByVal whatfile As String)
    Dim TextLine As String = ""
    Dim SplitLine() As String
    whatgrid.Rows.Clear()
    Dim thisobject0 As Object
    Dim thisobject1 As Object
    If System.IO.File.Exists(whatfile) = True Then
        Dim objReader As New System.IO.StreamReader(whatfile)
        Do While objReader.Peek() <> -1
            TextLine = objReader.ReadLine()
            SplitLine = Split(TextLine, ",")
            If SplitLine(0) = "false" Then thisobject0 = My.Resources.markfalse Else If SplitLine(0) = "true" Then thisobject0 = My.Resources.marktrue Else thisobject0 = My.Resources.blank
            If SplitLine(1) = "false" Then thisobject1 = My.Resources.markfalse Else If SplitLine(1) = "true" Then thisobject1 = My.Resources.marktrue Else thisobject1 = My.Resources.blank
            whatgrid.Rows.Add(thisobject0, SplitLine(0), thisobject1, SplitLine(1), SplitLine(2), SplitLine(3))
        Loop
        objReader.Close()
        blankNewRow()
    Else
        MsgBox("File Does Not Exist")
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...