如何在C#中将数据列表视图保存到.txt,以便下次打开表单时可以访问它?

时间:2012-12-28 21:30:23

标签: c# string listview save

如何将数据保存在列表视图中?

例如,如果用户已将某些内容放入listview然后关闭应用程序,那么所有这些信息都将丢失。有什么方法可以在将信息放入listView后立即保存信息吗?

这是我用来将信息从文本框输入到listView1的代码:

  string[] items = { titletxt.Text, statustxt.Text };
        ListViewItem lvi = new ListViewItem(items);
        listView1.Items.Add(lvi);

更新(2012年12月29日)

感谢您的帮助!但我似乎无法让它发挥作用。我创建了一个非常简单的表单来尝试让它工作。它有3个文本框(NameTxt,AgeTxt,HairColourTxt),一个按钮和listview(ListOfPeople)。

以下是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace listview
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] items = { NameTxt.Text, AgeTxt.Text, HairColourTxt.Text };
            ListViewItem lvi = new ListViewItem(items);
            ListOfPeople.Items.Add(lvi);
        }
    }
}

我试图添加@ user574632&发布的代码@Joe& @DmitryKvochkin和我已经改变了位但仍然无法让它工作。我不确定我做错了什么?我试图补充一下:

     private void saveListOfPeopleItems(string path, ListView lv)
    {
        var delimeteredListviewData = new List<string>();

        foreach (ListViewItem lvi in lv.Items)
        {
            string delimeteredItems = string.Empty;
            foreach (ListViewItem.ListViewSubItem lvsi in lvi.SubItems)
            {
                delimeteredItems += lvsi.Text + "#";
            }
            delimeteredListviewData.Add(delimeteredItems);
        }

        System.IO.File.WriteAllLines(path, delimeteredListviewData.ToArray());
    }

    private void loadListOfPeopleItems(string path, ListView lv)
    {

        foreach (string line in System.IO.File.ReadAllLines(path))
        {
            lv.Items.Add(new ListViewItem(line.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries)));
        }
    }

4 个答案:

答案 0 :(得分:1)

您需要创建保存逻辑,没有自动方法。

最简单的方法是使用Serialization(查找ISerializable)保存到您选择的文件中(根据您的喜好命名):您可以通过这种方式保存整个对象。 Here is a simple tutorial on serialization.

另一种方法是将listview内容解析为字符串(仅保留您需要的内容),并将字符串保存为文本文件(TextReaderTextWriter)。

如果您想保存应用程序设置(而不是用户数据),请查看可能更易于阅读的this linkthis one

最后,如果您需要定期保存的数据进行交互,或者您需要存储大量数据,请使用数据库(SQL,mySQL等)。后一种方法是最长的方法。

答案 1 :(得分:1)

如果要保存到文本文件,可以使用以下内容:

 private void saveListViewItems(string path, ListView lv)
    {
        var delimeteredListviewData = new List<string>();

        foreach (ListViewItem lvi in lv.Items)
        {
            string delimeteredItems = string.Empty;
            foreach (ListViewItem.ListViewSubItem lvsi in lvi.SubItems)
            {
                delimeteredItems += lvsi.Text + "#";
            }
            delimeteredListviewData.Add(delimeteredItems);
        }

        System.IO.File.WriteAllLines(path, delimeteredListviewData.ToArray());
    }

    private void loadListViewItems(string path, ListView lv)
    {

        foreach (string line in System.IO.File.ReadAllLines(path))
        {
            lv.Items.Add(new ListViewItem(line.Split(new char[]{'#'}, StringSplitOptions.RemoveEmptyEntries)));
        }
    }

答案 2 :(得分:0)

您可以使用集成的visual studio设置,然后将其绑定到列表视图,即使在设计器中也是如此。更改列表视图后,您可以保存它们

答案 3 :(得分:-1)

我会说答案是:使用.txt文件 您也可以创建一个SQL数据库,并将其保存在那里......