Удалить выделенный элемент в ListBox и записать его содержимое в файл

~Jack~

У меня имеется форма, на которой несколько TextBox, один ListBox и пару кнопок.С помощью TextBox я собираю данные и записываю в текстовый файл по клику первой кнопки. А теперь хочу с помощью второй кнопки удалить выделенную строку в ListBox и сохранить в файл без этой строки. Как это сделать?
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        My.Computer.FileSystem.WriteAllText("file2.txt", vbCrLf + TextBox1.Text + "|" + TextBox2.Text + "|" + TextBox3.Text + "|" + TextBox4.Text + "|" + TextBox5.Text + "|" + TextBox6.Text, True)
        ListBox1.Items.Clear()
        ListBox1.Items.AddRange(IO.File.ReadAllLines("file2.txt", System.Text.Encoding.Default))
    End Sub
 
    Private Sub BaseEditor_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ListBox1.Items.AddRange(IO.File.ReadAllLines("file2.txt", System.Text.Encoding.Default))
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
 
    End Sub
4 ответа

~Jack~

        ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
        IO.File.WriteAllLines("C:\ListBox.txt", ListBox1.Items.Cast(Of String).ToArray, System.Text.Encoding.Default)


~Jack~

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


~Jack~

Точнее вроде удаляется правильно, но когда я после удаления добавляют новый элемент, то появляется пустая строка


~Jack~

        IO.File.WriteAllText("C:\ListBox.txt", String.Join(vbCrLf, ListBox1.Items.Cast(Of String).ToArray), System.Text.Encoding.Default)
WriteAllLines
неизбежно ставит каретку на новую строку для следующей записи, отсюда - пустая строка