如何从文本文件创建listView?

时间:2017-09-03 11:48:21

标签: c#

我有一个这样的文本文件:

==
a
03/09
==
b
02/09

我想从文本文件中创建一个listView,如下所示:

enter image description here

我怎样才能在C#中做到这一点?

我试过这段代码:

ListViewItem lvi = new ListViewItem();
var sectionCharacters = File.ReadLines("bdaylist.list")
                            .SkipWhile(s => s != "==") 
                            .Skip(1)                            
                            .Skip(2)
                            .ToList();
lvi.Text = sectionCharacters[1];
lvi.SubItems.Add(sectionCharacters[2]);
listView1.Items.Add(lvi);

但它只能读取 b 02/09

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

var sectionCharacters = File.ReadLines("your_filepath_here").ToList();

//To remove '=='
sectionCharacters.Where(i => i.Trim() == "==").ToList()
                 .ForEach(item => sectionCharacters.Remove(item));

//To remove 'blank lines', if any
sectionCharacters.Where(i => i.Trim() == "").ToList()
                 .ForEach(item => sectionCharacters.Remove(item));

for (int i = 0; i < sectionCharacters.Count; i += 2)
{
    ListViewItem lvi = new ListViewItem();
    lvi.Text = sectionCharacters[i];
    lvi.SubItems.Add(sectionCharacters[i + 1]);
    listView1.Items.Add(lvi);
}

输出:

enter image description here

PS:这是一个简单的listView来显示输出。您可能会想到如何处理带有复选框的listView。

答案 1 :(得分:1)

您正在使用Skip(1)和Skip(2)忽略前两个条目。您也只是在列表中添加一个项目。您可以如下更改您的linq,并检查集合中的偶数项目,以便将它们添加到列表视图中。

    var sectionCharacters = File.ReadAllLines("bdaylist.list").Where(s => s != "==").ToList();            

        for (int i = 0; i < sectionCharacters.Count; i++)
        {
            if (i % 2 == 0)
            {
                var lvi = new ListViewItem { Text = sectionCharacters[i] };
                lvi.SubItems.Add(sectionCharacters[i + 1]);
                listView1.Items.Add(lvi);
            }
        }