C# 将两列列表框的数据保存到文件并加载

C# 将两列列表框的数据保存到文件并加载,c#,listbox,C#,Listbox,我正在开发一个包含两列列表框的列表程序。这两列都包含我希望另存为文件的字符串。只要在启动时可以读取并再次填充列表框,文件格式实际上并不重要 任何帮助都将不胜感激 查看StreamReader和StreamWriter类 要保存列表框内容,请执行以下操作: using (StreamWriter tWrite = new StreamWriter(@"c:\temp\test.txt")) { foreach (string tItem in listBox1.Items

我正在开发一个包含两列列表框的列表程序。这两列都包含我希望另存为文件的字符串。只要在启动时可以读取并再次填充列表框,文件格式实际上并不重要


任何帮助都将不胜感激

查看StreamReader和StreamWriter类

要保存列表框内容,请执行以下操作:

   using (StreamWriter tWrite = new StreamWriter(@"c:\temp\test.txt"))
    {
      foreach (string tItem in listBox1.Items)
      {
        tWrite.WriteLine(tItem);
      }
    }
listBox1.Items.AddRange(File.ReadAllLines(@"c:\temp\test.txt"));
用于读取文件内容:

   using (StreamWriter tWrite = new StreamWriter(@"c:\temp\test.txt"))
    {
      foreach (string tItem in listBox1.Items)
      {
        tWrite.WriteLine(tItem);
      }
    }
listBox1.Items.AddRange(File.ReadAllLines(@"c:\temp\test.txt"));

查看StreamReader和StreamWriter类

要保存列表框内容,请执行以下操作:

   using (StreamWriter tWrite = new StreamWriter(@"c:\temp\test.txt"))
    {
      foreach (string tItem in listBox1.Items)
      {
        tWrite.WriteLine(tItem);
      }
    }
listBox1.Items.AddRange(File.ReadAllLines(@"c:\temp\test.txt"));
用于读取文件内容:

   using (StreamWriter tWrite = new StreamWriter(@"c:\temp\test.txt"))
    {
      foreach (string tItem in listBox1.Items)
      {
        tWrite.WriteLine(tItem);
      }
    }
listBox1.Items.AddRange(File.ReadAllLines(@"c:\temp\test.txt"));

您可以从自定义对象填充列表框,并将该对象序列化到磁盘:

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.Windows.Forms;


//Serialize an object to disk (properties must be public):

public string Serialize(Object Input, string OutFile)
{
    System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();

    XmlSerializer XML = new XmlSerializer(Input.GetType());
    XML.Serialize(memoryStream, Input);

    memoryStream.Flush();
    memoryStream.Position = 0;

    if (!string.IsNullOrEmpty(OutFile))
    {
        using (FileStream fileStream = new FileStream(OutFile, FileMode.Create))
        {
            byte[] data = memoryStream.ToArray();
            fileStream.Write(data, 0, data.Length);
            fileStream.Close();
        }
    }

    return new System.IO.StreamReader(memoryStream).ReadToEnd();
}


//Deserialize from a serialized file:

    public object DeserializeFile(Type ObjectType, string FileName)
{
    Type type = typeof(object);

    if (ObjectType != null)
    { type = ObjectType; }

    using (FileStream fileStream = new FileStream(FileName, FileMode.Open, FileAccess.Read))
    {
        StreamReader sr = new StreamReader(fileStream);
        string XML = sr.ReadToEnd();

        XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type);
        fileStream.Close();

        return xmlSerializer.Deserialize(new StringReader(XML));
    }
}

CustomObject co = DeserializeFile(typeof(CustomObject), fileName.xml) as CustomObject;

我使用此方法将CheckedListBoxControl的内容保存到磁盘,以便用户能够使用自己的项目定义它。

您可以从自定义对象填充列表框,并将该对象序列化到磁盘:

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.Windows.Forms;


//Serialize an object to disk (properties must be public):

public string Serialize(Object Input, string OutFile)
{
    System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();

    XmlSerializer XML = new XmlSerializer(Input.GetType());
    XML.Serialize(memoryStream, Input);

    memoryStream.Flush();
    memoryStream.Position = 0;

    if (!string.IsNullOrEmpty(OutFile))
    {
        using (FileStream fileStream = new FileStream(OutFile, FileMode.Create))
        {
            byte[] data = memoryStream.ToArray();
            fileStream.Write(data, 0, data.Length);
            fileStream.Close();
        }
    }

    return new System.IO.StreamReader(memoryStream).ReadToEnd();
}


//Deserialize from a serialized file:

    public object DeserializeFile(Type ObjectType, string FileName)
{
    Type type = typeof(object);

    if (ObjectType != null)
    { type = ObjectType; }

    using (FileStream fileStream = new FileStream(FileName, FileMode.Open, FileAccess.Read))
    {
        StreamReader sr = new StreamReader(fileStream);
        string XML = sr.ReadToEnd();

        XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(type);
        fileStream.Close();

        return xmlSerializer.Deserialize(new StringReader(XML));
    }
}

CustomObject co = DeserializeFile(typeof(CustomObject), fileName.xml) as CustomObject;

我使用此方法将CheckedListBoxControl的内容保存到磁盘,以便用户能够使用自己的项目定义它。

首先,数据的显示和您使用的gui小部件完全无关(即,您使用的是“2列列表框”无关紧要)。与此相关的(在本例中是listbox)是绑定到listbox的对象集合

在这里,集合类实际上是加载和保存的重要元素。它的内容是您将从文件中保存和加载的内容。显示数据的列表框并不重要;它只是使用您设置的任何模板显示绑定到的集合的数据

那么,如何加载和保存您的请求?下面是一个使用二进制格式的简单示例。Intertube上还有无数其他的漫游器;只需谷歌“C#序列化到文件”


首先,数据的显示和您使用的gui小部件完全无关(即,您使用的是“2列列表框”并不重要)。与此相关的(在本例中是listbox)是绑定到listbox的对象集合

在这里,集合类实际上是加载和保存的重要元素。它的内容是您将从文件中保存和加载的内容。显示数据的列表框并不重要;它只是使用您设置的任何模板显示绑定到的集合的数据

那么,如何加载和保存您的请求?下面是一个使用二进制格式的简单示例。Intertube上还有无数其他的漫游器;只需谷歌“C#序列化到文件”


我花了好几天的时间来寻找一种方法。到目前为止,我还没有找到解决办法。我花了好几天的时间寻找一种方法来解决这个问题。到目前为止,我还没有找到解决方案。事实上,我找到了,但我就是不知道如何将多列数据保存到一个文件中,然后再次成功加载。谢谢。它看起来很简单,我当然也会尝试。实际上我已经尝试过了,但我就是不知道如何将多个列中的数据保存到一个文件中并再次成功加载。谢谢。它看起来很简单,我当然也会试试这个。