所以你在文本文件和列表视图中有一个csv列表。字段是
组,列1,列2,栏3,Column4,Column5
示例(所有字符串)
"Beginning","1","Quiet","Some text","Some other text","c:\...\image.jpg"
"Beginning","2","Quiet","Some text2","Some other text2","c:\...\image2.jpg"
"Middle","3","Quiet","Some text3","Some other text3","c:\...\image3.jpg"
"Middle","4","Running","Some text4","Some other text4","c:\...\image4.jpg"
组是列表视图组。 Column1是listviewitem,Column2是Column1的第1个子项,Column3是Column1的第2个子项,Column4是Column1的第3个子项,Column5是Column1的最后一个子项。
Group和Column2不是唯一的,所有其他列都是唯一的。
最有效的方法是什么?
我尝试了什么:
ListViewGroup k = new ListViewGroup("group1");
ListViewGroup l = new ListViewGroup("group2");
ListViewGroup a = new ListViewGroup("group3");
listView1.Groups.AddRange(new ListViewGroup[] {a, k, l });
ListViewItem item1 = new ListViewItem("column1_1", 0);
item1.SubItems.Add("column2_1");
item1.SubItems.Add("column3_1");
item1.SubItems.Add("column4_1");
item1.SubItems.Add("column5_1");
item1.Group=k;
listView1.Items.Add(item1);
ListViewItem item2 = new ListViewItem("column1_2", 0);
...
作为基础。但这种方法使自动化变得困难。特别是当有更多的组被重用时。所以我正在寻找一种通常这样做的方式。
答案 0 :(得分:0)
以下是您可以尝试初学者的事情,请报告这是否适合您。 我将从单个ListView First开始,以便您了解事情的工作原理。
FileStream fileStreamNew = File.Open("C:\\myCSVFile.csv", FileMode.Open, FileAccess.Read);
StreamReader streamRead = new StreamReader(fileStreamNew);
string strView = streamRead.ReadToEnd();
streamRead.Close();
fileStreamNew.Close();
String[] strArray = strView.Split(new char[] { ',' });
foreach (string strValue in strArray)
{
listView1.Items.Add(strValue);
}
答案 1 :(得分:0)
在导入和导出到.csv(或任何分隔文件)方面,有一个名为TextFieldParser的很好的类(有点令人惊讶地)是Microsoft.VisualBasic命名空间。您只需将其指向文件,说明分隔符是什么,并在调用ReadLine()时返回字符串[]。您还可以定义注释标记,确保只导入所需的数据。
最棒的是异常处理 - 如果该行是意外格式,则会抛出MalformedExceptions。
查看here了解更多详情。
我已经习惯了很多次,它永远不会让我失望!还使您的代码更容易阅读。