从字符串创建新列表项

时间:2016-08-19 10:02:23

标签: c# string list text

我有一个带有组合框的程序,该框的列表和一个字符串。

字符串是通过文本框从用户输入创建的,每次程序关闭时都会保存。所以,如果我输入"输入文字"然后关闭并打开程序,组合框将有一个包含1个字符串的列表,显示"输入文本"

问题是我想继续使用新信息添加到列表中,但目前它只是不断覆盖我上次放置的内容。

每次字符串不同时,如何使用新项目添加到列表中?

private void Form1_Load(object sender, EventArgs e)
{
    //Load Settings
    saveLocationTextBox.Text = MySettings.Default["SaveSaveLocationText"].ToString();

    List<string> list = new List<string>();
    list.Add(saveLocationTextBox.Text);

    comboBox.DataSource = list;
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    //Save User Input
    MySettings.Default["SaveSaveLocationText"] = saveLocationTextBox.Text;
    MySettings.Default.Save();
}

2 个答案:

答案 0 :(得分:1)

而不是覆盖文件中的文本:

var items = comboBox.Items.Select(item => comboBox.GetItemText(item)).ToList();
items.Add(saveLocationTextBox.Text);

MySettings.Default["SaveSaveLocationText"] = string.Join(";", items);

然后阅读时:

var text = MySettings.Default["SaveSaveLocationText"].ToString();
comboBox.DataSource = text.Split(';').ToList();

答案 1 :(得分:1)

问题是您只保存设置中的所选项目文本,而不是组合框中的所有项目。

我建议首先获取组合中的所有项目,并将它们放在逗号分隔的字符串中。

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    //Save User Input
    string[] itemsToStore = new string[comboBox.Items.Count];

    for (int i = 0; i < comboBox.Items.Count; i++)
    {
        itemsToStore[i] = comboBox.GetItemText(comboBox.Items[i]); 
    }

    MySettings.Default["SaveSaveLocationText"] = saveLocationTextBox.Text;
    MySettings.Default["SaveSaveLocationItems"] = string.Join(",", itemsToStore);
    MySettings.Default.Save();
}

private void Form1_Load(object sender, EventArgs e)
{
    //Load Settings
    saveLocationTextBox.Text = MySettings.Default["SaveSaveLocationText"].ToString();

    string listItems = MySettings.Default["SaveSaveLocationItems"].ToString();

    List<string> list = new List<string>();
    list.AddRange(listItems.Split(','));

    comboBox.DataSource = list;
}