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