我正在做一个项目,我必须读取一个.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);
}
}
}