faiqaa Ответов: 1

Как удалить выбранную строку данных в списке и обновить соответствующий текстовый файл (удалить ту же строку из текстового файла) с помощью VB?


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

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

If ListBox1.SelectedItems.Count > 0 Then
           ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
           Dim MyString As String
           For Count As Integer = 0 To ListBox1.Items.Count - 1
               MyString &= ListBox1.Items.Item(Count) & Environment.NewLine
           Next
           My.Computer.FileSystem.WriteAllText("Z:\Desktop\ciao.txt", MyString, False)
       End If
   End Sub

1 Ответов

Рейтинг:
7

Richard Deeming

Как говорится в сообщении об ошибке, Вы читаете значение переменной MyString перед первым назначением к нему.

Во-первых, если в нем не осталось никаких предметов. ListBox1, код внутри вашего цикла никогда не будет выполняться. Когда вы приходите в WriteAllText строка, переменная не имеет присвоенного ей значения.

Во-вторых, внутри цикла вы добавляете строку к переменной. Но для этого необходимо сначала прочитать текущее значение переменной. На первой итерации цикла значение не было присвоено.

Быстрое решение состоит в том, чтобы присвоить значение перед циклом:

Dim MyString As String = ""

Однако, как правило, рекомендуется избегать конкатенации строк в цикле. В зависимости от количества элементов в вашем списке, вы можете зациклиться на использовании класс StringBuilder[^] чтобы построить строку.