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

4jb9z9bj  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(133)

我在项目上工作,在那里我必须读取一个.csv文件,其中每行的csv文件包含14个字段。然而,我只能设法打印第一行与listview。我只是不能让它打印多行,我不知道为什么。
这是我代码:

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        var path = @"C:\Universitet\Privat\testfil.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);
        }
    }

此外,第一行只会显示,如果我真的点击了空白的空间,而不是只显示在负载,因为它应该。
下面是代码的输出:output of code

bbuxkriu

bbuxkriu1#

您的行在循环之前声明,因此每次都要对其进行编辑。
更改为:

// 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:\Universitet\Privat\testfil.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);
            
        }
    }
}

相关问题