Сохранить и загрузить элементы списка, добавленные пользователем в C # с приложением Windows Form - PullRequest
0 голосов
/ 05 мая 2018

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

Вариант использования:

  • Пользователь открывает приложение.
  • Пользователь добавляет элемент под названием «Элемент 1» в список с помощью кнопки.
  • Пользователь закрывает приложение.
  • Пользователь снова открывает приложение и видит, что «Элемент 1» все еще находится в списке, и добавленный элемент не был потерян при закрытии приложения.

Я видел, как люди преуспели в том, чтобы сделать что-то подобное с данными текстового поля (это видео, например: сохранение пользовательских настроек ), но у меня возникли проблемы при работе с данными списка.

Вот как я пытался сделать это сам, основываясь на связанном видео, начиная с кнопки, которую пользователь использует для добавления элемента в список:

private void AddTeamButton_Click(object sender, EventArgs e)
    {
      // add the item to the listbox
      listBox1.Items.Add("Example string);
      // add the item to the ListBoxStuff settings 
      Settings.Default["ListBoxStuff"] = Settings.Default["ListBoxStuff"] + "|" + "Example string";
    }

Затем при загрузке формы:

    private void Form1_Load(object sender, EventArgs e) // needs to stay
    {

        // Items from the ListBoxStuff setting is saved as a string - this may be the issue, but am unsure, this gets the values of the settings?
        string listboxItems = Settings.Default["ListBoxStuff"].ToString();

        // If there are values other than null or empty.
        if (listboxItems != null || !listboxItems.Equals(""))
        {
            string[] separators = { "|" };
            // Put the items in a string array, splitting them at the | which means the next item in the string
            string[] itemsToAdd = listboxItems.Split(separators, StringSplitOptions.RemoveEmptyEntries);
            // Loop through the array
            foreach (string i in itemsToAdd)
            {
                // Add each item to the list box
                listBox1.Items.Add(i);
            }
        }
    }

Я думал, что каждый раз, когда пользователь добавляет элемент в список, в строке listboxstuff добавляется элемент с символом | Между тем, при загрузке мы получаем эту строку, разделяем ее на каждый | и добавляем каждый элемент во вновь созданном массиве в список, и если он пуст, ничего не происходит.

Но в результате элемент, добавленный в список, отсутствует при повторном открытии приложения после добавления элемента.

Кто-нибудь знает, как это можно сделать?

1 Ответ

0 голосов
/ 05 мая 2018

Вам нужно сохранить настройки

private void AddTeamButton_Click(object sender, EventArgs e)
{
  // add the item to the listbox
  listBox1.Items.Add("Example string);
  // add the item to the ListBoxStuff settings 
  Settings.Default["ListBoxStuff"] = Settings.Default["ListBoxStuff"] + "|" + "Example string";
  Settings.Default.Save();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...