Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串创建新列表项_C#_String_List_Text - Fatal编程技术网

C# 从字符串创建新列表项

C# 从字符串创建新列表项,c#,string,list,text,C#,String,List,Text,我有一个带有组合框的程序,该框的列表和字符串 该字符串通过文本框从用户输入创建,并在每次程序关闭时保存。因此,如果我键入“输入文本”,然后关闭并打开程序,组合框将有一个包含1个字符串的列表,其中显示“输入文本” 问题是我想不断地用新信息添加到列表中,但目前它只是不断地覆盖我上次输入的内容 如何在每次字符串不同时使用新项添加到列表中 private void Form1_Load(object sender, EventArgs e) { //Load Settings saveL

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

该字符串通过文本框从用户输入创建,并在每次程序关闭时保存。因此,如果我键入“输入文本”,然后关闭并打开程序,组合框将有一个包含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();
}
private void Form1\u加载(对象发送方,事件参数e)
{
//负载设置
saveLocationTextBox.Text=MySettings.Default[“saveLocationText”].ToString();
列表=新列表();
添加(saveLocationTextBox.Text);
comboBox.DataSource=列表;
}
私有作废Form1\u FormClosing(对象发送方,FormClosingEventArgs e)
{
//保存用户输入
MySettings.Default[“saveLocationText”]=saveLocationTextBox.Text;
MySettings.Default.Save();
}

不要覆盖文件中的文本,请执行以下操作:

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();

不要覆盖文件中的文本,请执行以下操作:

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();

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

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

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;
}
private void Form1\u FormClosing(对象发送方,FormClosingEventArgs e)
{
//保存用户输入
string[]itemsToStore=新字符串[comboBox.Items.Count];
对于(int i=0;i
问题在于,您只保存设置中的选定项目文本,而不是组合框中的所有项目

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

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;
}
private void Form1\u FormClosing(对象发送方,FormClosingEventArgs e)
{
//保存用户输入
string[]itemsToStore=新字符串[comboBox.Items.Count];
对于(int i=0;i
尝试将列表放在一个单独的文件中。您需要将分配给组合框的现有字符串列表保存为数据源,在
Form1\u Load
中,您应该将新字符串添加到保存的字符串列表中,而不是创建新列表并将其添加到该列表中。因为每次从头开始创建新列表时,您只需向其中添加新字符串。请尝试将列表放入单独的文件中。您需要将分配给组合框的现有字符串列表保存为数据源,在
Form1\u Load
中,您应该将新字符串添加到保存的字符串列表中,而不是创建新列表并将其添加到该列表中。因为每次您从头开始创建一个新列表时,您只需将新字符串添加到其中。