listview只打印一行,而不是整个文件



我正在做一个项目,我必须读取一个.csv文件,其中csv文件的每一行都包含14个字段。但是,我只能用listview打印第一行。我根本无法让它打印超过一行,我也不知道为什么。

这是我的代码:

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
var path = @"C:UniversitetPrivattestfil.csv";
using (TextFieldParser csvParser = new TextFieldParser(path))
{
csvParser.CommentTokens = new string[] { "#" };
csvParser.SetDelimiters(new string[] { ";"});
csvParser.HasFieldsEnclosedInQuotes = true;

//skipper kolloner
csvParser.ReadLine();
int i = 0;
ListViewItem rows = new ListViewItem();
while (!csvParser.EndOfData) {
//læser linje og pointer bevaeger sig til næste linje 
string[] fields = csvParser.ReadFields();
rows.SubItems.Add(fields[0]);
rows.SubItems.Add(fields[1]);
rows.SubItems.Add(fields[2]);
rows.SubItems.Add(fields[3]);
rows.SubItems.Add(fields[4]);
rows.SubItems.Add(fields[5]);
rows.SubItems.Add(fields[6]);
rows.SubItems.Add(fields[7]);
rows.SubItems.Add(fields[8]);
rows.SubItems.Add(fields[9]);
rows.SubItems.Add(fields[10]);
rows.SubItems.Add(fields[11]);
rows.SubItems.Add(fields[12]);
rows.SubItems.Add(fields[13]);

}
listView1.Items.Add(rows);
}
}

此外,如果我真的点击了空白区域,第一行只会显示,而不是像预期的那样只在加载时显示

这是代码的输出:代码输出

您的行是在循环之前声明的,因此每次都会对其进行编辑。

更改为:

// Call this method when you want to populate your listview
private void PopulateMyListView()
{
// if you call this method multiple times, don't forget to remove the olds rows
listview1.Items.Clear();
var path = @"C:UniversitetPrivattestfil.csv";
using (TextFieldParser csvParser = new TextFieldParser(path))
{
csvParser.CommentTokens = new string[] { "#" };
csvParser.SetDelimiters(new string[] { ";"});
csvParser.HasFieldsEnclosedInQuotes = true;

//skipper kolloner
csvParser.ReadLine();

while (!csvParser.EndOfData) {
//læser linje og pointer bevaeger sig til næste linje 
string[] fields = csvParser.ReadFields();
ListViewItem row = new ListViewItem("A NEW LINE !");
row.SubItems.Add(fields[0]);
row.SubItems.Add(fields[1]);
row.SubItems.Add(fields[2]);
row.SubItems.Add(fields[3]);
row.SubItems.Add(fields[4]);
row.SubItems.Add(fields[5]);
row.SubItems.Add(fields[6]);
row.SubItems.Add(fields[7]);
row.SubItems.Add(fields[8]);
row.SubItems.Add(fields[9]);
row.SubItems.Add(fields[10]);
row.SubItems.Add(fields[11]);
row.SubItems.Add(fields[12]);
row.SubItems.Add(fields[13]);
listView1.Items.Add(row);

}
}
}

最新更新