C#将ListViewItem:SubItems和Tags保存到textfile

时间:2016-12-14 10:36:41

标签: c# winforms listviewitem

我正在为自己开发Winforms项目,基本上我有一个带有ListView(listView1)的表单,我有很多控件和子表单以及这个项目中的内容,无论如何我的目标最初是保存输入的数据ListViewItem为“.txt”文件,每个项目用逗号(,)分隔。

最初这个效果很好,但是我已经调整了我的应用程序也将数据添加到每个listView1.SelectedItem [i] .Tag“,这也很好但我忘了重新审视事物的保存方面...

所以我有这个由StackOverflow上的人提交的公式(对不起,我不能是谁,也不记得/找到链接):

        private StringBuilder ReadingListView()
    {
        string delimiter = ",";
        List<string> values;
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < listView1.Items.Count; i++)
        {
            values = new List<string>();
            for (int j = 0; j < listView1.Items[i].SubItems.Count; j++)
            {
                values.Add(listView1.Items[i].SubItems[j].Text);
            }

            sb.AppendLine(string.Join(delimiter, values.ToArray()));
        }
        return sb;
    }

这非常有效并且它节省了我很多时间,有人可以举例说明如何调整它以保存“listView1.Items [i] .Tag”吗?我不能让我的大脑运作和锻炼为什么我不能适应这个也支持添加“标签”它我已经坚持了几个小时,我知道有一个简单的解决方案,但ARGH!我一直在尝试很多方法,但却无法解决这个问题。

1 个答案:

答案 0 :(得分:1)

我的大脑刚刚醒来,我意识到我只需要按照我想要将数据保存在文本文件中的方式制作数组,并将for循环更改为不那么复杂:

        private StringBuilder ReadingListView()
    {
        string delimiter = ",";
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < listView1.Items.Count; i++)
        {
            string[] arr = new string[5];
            arr[0] = listView1.Items[i].SubItems[0].Text;
            arr[1] = listView1.Items[i].SubItems[1].Text;
            arr[2] = listView1.Items[i].Tag.ToString();
            arr[3] = listView1.Items[i].SubItems[3].Text;
            arr[4] = listView1.Items[i].SubItems[4].Text;
            sb.AppendLine(string.Join(delimiter, arr.ToArray()));
        }
        return sb;
    }

感谢您尝试帮助@Nino,如果您有更好的解决方案,请告诉我。