如何将数据保存在列表视图中?
例如,如果用户已将某些内容放入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)));
}
}
答案 0 :(得分:1)
您需要创建保存逻辑,没有自动方法。
最简单的方法是使用Serialization
(查找ISerializable
)保存到您选择的文件中(根据您的喜好命名):您可以通过这种方式保存整个对象。 Here is a simple tutorial on serialization.
另一种方法是将listview内容解析为字符串(仅保留您需要的内容),并将字符串保存为文本文件(TextReader
和TextWriter
)。
如果您想保存应用程序设置(而不是用户数据),请查看可能更易于阅读的this link或this 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数据库,并将其保存在那里......