C# 如何将列表保存到文件中,然后将项目读回列表框?
我试图在不使用序列化的情况下将简单列表保存到文件中。这可能吗C# 如何将列表保存到文件中,然后将项目读回列表框?,c#,list,io,C#,List,Io,我试图在不使用序列化的情况下将简单列表保存到文件中。这可能吗 public partial class Form1 : Form { public List<string> _testList = new List<string>(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, Event
public partial class Form1 : Form
{
public List<string> _testList = new List<string>();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int _add = 0;
string _addString ="";
for (int i = 0; i < 5; i++)
{
_add =+ i;
_addString = Convert.ToString(_add);
_testList.Add(_addString);
}
TextWriter tw = new StreamWriter("SavedList.txt", true);
foreach (string s in _testList)
tw.WriteLine(s);
tw.Close();
StreamReader streamReader = new StreamReader("SavedList.txt");
// Read the data to the end of the stream.
listBox1.Text = streamReader.ReadToEnd();
// Close the text stream reader.
streamReader.Close();
// Close the file stream.
//fileStream.Close();
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
}
公共部分类表单1:表单
{
公共列表_testList=新列表();
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
int _add=0;
字符串_addString=“”;
对于(int i=0;i<5;i++)
{
_加=+i;
_addString=Convert.ToString(_add);
_testList.Add(_addString);
}
TextWriter tw=新的StreamWriter(“SavedList.txt”,true);
foreach(testList中的字符串s)
tw.WriteLine(s);;
tw.Close();
StreamReader StreamReader=新的StreamReader(“SavedList.txt”);
//将数据读取到流的末尾。
listBox1.Text=streamReader.ReadToEnd();
//关闭文本流阅读器。
streamReader.Close();
//关闭文件流。
//fileStream.Close();
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
Close();
}
}
这不会发出错误,但不会产生任何效果
如果必要的话,我会使用Serialize,不过我怀疑这不是必要的。是吗?您可以使用
文件
类来实现这一点
File.WriteAllLines("SavedList.txt", _testList.ToArray());
要将其读回,您可以使用:
string[] lines = File.ReadAllLines("SavedList.txt");
foreach (string line in lines)
listBox1.Items.Add(line);
您可以使用
文件
类来实现这一点
File.WriteAllLines("SavedList.txt", _testList.ToArray());
要将其读回,您可以使用:
string[] lines = File.ReadAllLines("SavedList.txt");
foreach (string line in lines)
listBox1.Items.Add(line);
您的问题是
列表框的文本
字段
不是那样的
更改:
listBox1.Text = streamReader.ReadToEnd();
致:
文本字段保存当前选定的文本。它不用于向列表中添加项目。您的问题是
列表框的文本
字段
不是那样的
更改:
listBox1.Text = streamReader.ReadToEnd();
致:
文本字段保存当前选定的文本。它不用于向列表中添加项目。文件是正在生成还是根本没有写入?如果您能找到该文件,我怀疑问题出在这里
listBox1.Text=streamReader.ReadToEnd()
而您只是在读取文件并将其放入列表框时遇到问题。您应该将字符串值放回列表中,然后将它们添加到ListBox.Items。我将您的代码复制到一个空白的控制台程序中,效果很好。在代码中设置断点,查看是否有异常跳出。谢谢您的建议。我将用更多的位置信息预先挂起文件名,看看这是否有帮助。在更新列表框之前,我会重新阅读列表。您的评论导致了解决方案。解决了的。列表框刷新问题。listBox1.BeginUpdate();listBox1.DataSource=\u testList;listBox1.EndUpdate();文件正在生成还是根本没有被写入?如果您能找到该文件,我怀疑问题出在这里listBox1.Text=streamReader.ReadToEnd()
而您只是在读取文件并将其放入列表框时遇到问题。您应该将字符串值放回列表中,然后将它们添加到ListBox.Items。我将您的代码复制到一个空白的控制台程序中,效果很好。在代码中设置断点,查看是否有异常跳出。谢谢您的建议。我将用更多的位置信息预先挂起文件名,看看这是否有帮助。在更新列表框之前,我会重新阅读列表。您的评论导致了解决方案。解决了的。列表框刷新问题。listBox1.BeginUpdate();listBox1.DataSource=\u testList;listBox1.EndUpdate();这并没有回答OP的问题。这只是将序列写入磁盘的另一种方式,这是错误的。将文本添加到列表框1.text
不起作用。它需要进入列表框1.Items
。他问“我正在尝试在不使用Serialize的情况下将一个简单列表保存到文件中。这可能吗?”我给了他一种方法。他已经在这样做了。:)我将编辑问题标题以反映实际问题。@eddie_cat我一发布就意识到了我的错误,您的评论发布时我正在编辑。谢谢你抓住了这个问题。这并没有回答OP的问题。这只是将序列写入磁盘的另一种方式,这是错误的。将文本添加到列表框1.text
不起作用。它需要进入列表框1.Items
。他问“我正在尝试在不使用Serialize的情况下将一个简单列表保存到文件中。这可能吗?”我给了他一种方法。他已经在这样做了。:)我将编辑问题标题以反映实际问题。@eddie_cat我一发布就意识到了我的错误,您的评论发布时我正在编辑。感谢您捕捉到该主题。按环境拆分。换行符
将根据系统覆盖正确的行尾。按环境拆分。换行符
将根据系统覆盖正确的行尾。