将textbox中的内容储存到List<T>中
怎么关闭程序时保存List<T>中的内容并在下次打开文件的时候读取?

解决方案 »

  1.   

    List<string>的话,可以写到文本文件或数据库中。
    比如存入文本文件中:
    List<string> valueList = ......;
    File.WriteAllLines(@"c:\data.txt", valueList.ToArray());
    读出:
    List<string> valueList = File.ReadAllLines(@"c:\data.txt").ToList();
      

  2.   

    复杂的话,建议还是使用xml序列化。简单的话,给一个例子
    比如T是User
    class User
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }写入
    System.IO.File.WriteAllLines(@"c:\1.txt", list.Select(x => string.Format("{0},{1}", x.ID, x.Name)));
    读取
    var list = System.IO.File.ReadAllLines(@"c:\1.txt").Select(x => new User() { ID = int.Parse(x.Split(',')[0]), Name = x.Split(',')[1] });
      

  3.   


    如果是xml怎么储存和读取?
      

  4.   

    自己Google C# XML序列化
      

  5.   

    如果想XML格式存储,请使用DataContractSerializer类来写入到文件。
    如果想Json格式存储,请使用DataContractJsonSerializer来写入到文件。下面给出Json格式存储示例,假定要存储的对象类型为Schema:SaveFileDialog sf = new SaveFileDialog() { Filter = "文本文件(*.txt)|*.txt", AddExtension = true };
    if (sf.ShowDialog() == true)
    {
        try
        {
            DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Schema));
            var ss = sf.OpenFile();
            js.WriteObject(ss, data);
            ss.Close();
            MessageBox.Show("保存成功");
        }
        catch
        {
            MessageBox.Show("保存失败");
        }
    }
    OpenFileDialog of = new OpenFileDialog() { Filter = "文本文件(*.txt)|*.txt", AddExtension = true };
    if (of.ShowDialog() == true)
    {
        try
        {
            DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Schema));
            var ss = of.OpenFile();
            data = js.ReadObject(ss) as Schema;
            ss.Close();
            gridControl2.ItemsSource = null;
            gridControl1.ItemsSource = data.Tables;
            MessageBox.Show("加载成功");
        }
        catch
        {
            MessageBox.Show("加载失败");
        }
    }
      

  6.   


    没有任何类型是List<T>。你必须把T具体替换为实际的类型,那么List<T>才是一个具体的类型。如果你说某对象的类型是List<T>那么你还没有理解泛型的概念。