Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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#_List_Io - Fatal编程技术网

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我一发布就意识到了我的错误,您的评论发布时我正在编辑。感谢您捕捉到该主题。按
环境拆分。换行符
将根据系统覆盖正确的行尾。按
环境拆分。换行符
将根据系统覆盖正确的行尾。