我不确定我需要在while循环中添加什么(或者如果有更好的方法),以便将itemsListBox中的所有项添加到文件中。现在(在writer.writeline之前没有任何while循环)它只将最后一项添加到文件中。程序应该将项目添加到列表框并将它们保存到文件中,然后在重新打开程序时加载它们。它还有一个标签,可以跟踪列表框中的项目数。
private const string TO_DO_LIST = "to-do-list.txt";
public Form1()
{
InitializeComponent();
}
private void enterButton_Click(object sender, EventArgs e)
{
AddItem();
}
private void AddItem()
{
itemsList.Items.Add(itemsBox.Text);
numberOfItemsLabel.Text = itemsList.Items.Count.ToString();
SaveItem();
}
private void SaveItem()
{
StreamWriter writer = File.CreateText(TO_DO_LIST);
string newItem = itemsBox.Text;
while ()//???
{
writer.WriteLine(newItem);
}
writer.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
StreamReader reader = File.OpenText(TO_DO_LIST);
while (!reader.EndOfStream)
{
itemsList.Items.Add(reader.ReadLine());
}
}
catch (FileNotFoundException ex)
{
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 0 :(得分:0)
这样的事情会起作用吗?
using (StreamWriter writer = File.CreateText(TO_DO_LIST))
{
foreach (string text in itemsList.Items)
{
writer.WriteLine(text);
}
};
答案 1 :(得分:0)
您可以使用File.AppendAllLines
只使用一行来执行此操作,该行将打开或创建文件,向其附加文本并关闭它。
第一个参数是文件路径,第二个参数是要添加的行的IEnumerable
。
由于ListBox.Items
是ListBox.ObjectCollection
,我们需要将其转换为IEnumerable<string>
才能使用AppendAllLines
方法。这可以使用Cast<string>()
方法结合ToList()
:
File.AppendAllLines(TO_DO_LIST, itemsList.Items.Cast<String>().ToList());