Помните состояние элементов CheckedListBox с помощью текстового файла - PullRequest
0 голосов
/ 27 апреля 2018

Я пишу код для отметки флажков CheckedListBox, когда строки в моем текстовом файле соответствуют элементам в CheckedListBox.

Dim fl As String = s.ToString() + "\Script\" + "DB_NAME.txt"

If File.Exists(fl) Then
    If File.Exists(fl) Then
        Dim line As String
        Dim i As Integer

        Using reader As StreamReader = New StreamReader(s.ToString() + "\Script\" + "DB_NAME.txt")

            Do Until reader.Peek = -1
                line = reader.ReadLine

                'For Each Item As DataRowView In grd_tabledata.Items
                '    Dim text As String = Item(0).ToString()
                '    If (text = line) Then
                '        grd_tabledata.SetItemChecked(text, True)
                '    End If
                '    MsgBox(text)
                'Next

                Do While (i <= grd_tabledata.Items.Count)
                    If (CType(grd_tabledata.Items(i), String) = line) Then
                        grd_tabledata.SetItemChecked(i, True)
                    End If

                    'i = (i + 1)
                Loop
            Loop

        End Using

    End
End

Но я получаю сообщение об ошибке:

'Преобразование из типа' DataRowView 'в тип' String 'недопустимо.'

Я хотел бы отметить элементы CheckedListBox, когда в этом файле существует соответствующая запись.

Может кто-нибудь помочь мне с этим вопросом?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

В вашем коде просто замените цикл «До» следующим кодом

For i=0 To grd_tabledata.Items.count -1
    If (CType(grd_tabledata.Items(i), String) = line) Then
           grd_tabledata.SetItemChecked(i, True)
             Exit For
         End If 
 Next
0 голосов
/ 27 апреля 2018

Если я правильно понял, вы хотите запомнить состояние CheckedListBox , используя текстовый файл.

Я создал фиктивное решение с формой Windows (Form1), содержащей CheckedListBox (CheckedListBox1) и кнопку (Button1), которая обновляет элементы в CheckedListBox в соответствии с содержимым в "DB_NAME.txt" текстовый файл.

enter image description here

Form1

enter image description here

Form1.vb

Imports System.IO

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles UpdateButton.Click

        Dim filename As String = "DB_NAME.txt"

        'Dim filename As String = s.ToString() + "\Script\" + "DB_NAME.txt"

        If Not File.Exists(filename) Then Return

        Using reader As StreamReader = New StreamReader(filename)
            Do Until reader.Peek = -1
                Dim line As String = reader.ReadLine

                For i As Integer = 0 To CheckedListBox1.Items.Count - 1
                    If (CheckedListBox1.Items(i).ToString = line) Then CheckedListBox1.SetItemChecked(i, True)
                Next
            Loop
        End Using
    End Sub
End Class

Содержание текстового файла "DB_NAME.txt":

item C
item D

И, наконец, во время выполнения, после нажатия кнопки «Обновить», вы получаете:

enter image description here

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

Я полагаю, что вы все еще получаете исключения, потому что вы вызываете методы и свойства, которые не существуют в вашем объекте. Это, вероятно, потому что вы предполагаете, что этот объект имеет заданный тип, а это не так.

...