C# сохранить все элементы в списке в текстовый файл

В последнее время мне очень нравится C#, и я просто тестирую с ним, но, похоже, есть одна часть, которую я не получаю.

В основном я хочу, чтобы при нажатии кнопки "Сохранить" необходимо сохранить все элементы в списке в текстовый файл. На данный момент все, что он придумывает в файле, это System.Windows.Forms.ListBox+ObjectCollection.

вот что у меня есть до сих пор. С SaveFile.WriteLine(listBox1.Items); часть я пробовал положить много разных методов, и я не могу понять это. Также имейте в виду, что в конце концов продукт моей программы я хотел бы, чтобы он вернулся к этому текстовому файлу и вывел то, что находится в текстовом файле в список, если это невозможно, то мой плохой, я новичок в C# в конце концов ;)

private void btn_Save_Click(object sender, EventArgs e)
{
    const string sPath = "save.txt";

    System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath);
    SaveFile.WriteLine(listBox1.Items);
    SaveFile.ToString();
    SaveFile.Close();

    MessageBox.Show("Programs saved!");
}

2 ответов


из кода

SaveFile.Метода WriteLine(список listbox1.Items);

ваша программа на самом деле делает это:

SaveFile.WriteLine(listBox1.Items.ToString());

на .ToString() метод Items collection возвращает имя типа коллекции (System.Windows.Forms.ListBox+ObjectCollection) так как это значение по умолчанию .ToString() поведение, если метод не переопределен.

чтобы сохранить данные значимым образом, вам нужно зациклить каждый элемент и написать его так, как вам нужно. Вот пример код, я предполагаю, что ваши предметы имеют соответствующий .ToString() реализация:

System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath);
foreach(var item in listBox1.Items)
{
    SaveFile.WriteLine(item.ToString());
}

Items - это коллекция, вы должны перебрать все элементы, чтобы сохранить их

private void btn_Save_Click(object sender, EventArgs e)
{
    const string sPath = "save.txt";

    System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath);
    foreach (var item in listBox1.Items)
    {
        SaveFile.WriteLine(item);
    }

    SaveFile.Close();

    MessageBox.Show("Programs saved!");
}