C#读取/导入文本文件到ListView

时间:2017-05-23 22:40:12

标签: c# listview import text-files readfile

我需要将文本文件读入ListView。我已经将它保存到文件中了,但似乎没有人能够很好地回读文件。当文件读入时;所有数据都在第一列中,而不是显示在相应的标题下。

以下是我保存到文件中的文本文件数据:

05 / 23 / 2017 10 : 44 13 : 44 3 $48.00 05 / 23 / 2017 09 : 15 15 : 15 6 $96.00

以下是我使用的代码:

private void ReadInTimeSheet()
{
        foreach (string line in File.ReadAllLines(@"C:filepath\MyTimeSheet.txt"))
        {
            lvTimeSheet.Items.Add(new ListViewItem(line));
        }
}

以下是阅读中的结果: Data displayed in ListView

如果您在打开文件时遇到问题;所有数据都包含在第一列中,并且看起来与上面文件中文本的视图完全相同。

我需要的是第1列中显示的日期,第2列中的开始时间,第3列中的停止时间,第4列中的工作总时数以及第5列中收到的工时数。

我怎样才能做到这一点?提前谢谢。

1 个答案:

答案 0 :(得分:2)

首先,您应该在列表视图中添加列,并确保View设置为Details。将列宽设置为-2会自动调整它们的大小:

private void Form1_Load(object sender, EventArgs e)
{
    lvTimeSheet.View = View.Details;
    lvTimeSheet.Columns.Add("Date");
    lvTimeSheet.Columns.Add("Start Time");
    lvTimeSheet.Columns.Add("Stop Time");
    lvTimeSheet.Columns.Add("Total Hours");
    lvTimeSheet.Columns.Add("Total Pay");

    // Auto-size the columns
    for (int i = 0; i < lvTimeSheet.Columns.Count; i++)
    {
        lvTimeSheet.Columns[i].Width = -2;
    }
}

然后,当您阅读文件时,您需要阅读5行,并将这5行添加为单个ListViewItem。请注意,可以使用数组初始化ListViewItem,因此我们只需循环遍历文件行,一次五行,创建包含这些行的数组,然后添加新的ListViewItem由该数组填充的那些:

private void ReadInTimeSheet()
{
    var fileLines = File.ReadAllLines(@"C:\filepath\MyTimeSheet.txt"))

    for (int i = 0; i + 4 < fileLines.Length; i += 5)
    {
        lvTimeSheet.Items.Add(
            new ListViewItem(new[]
            {
                fileLines[i],
                fileLines[i + 1],
                fileLines[i + 2],
                fileLines[i + 3],
                fileLines[i + 4]
            }));
    }

    // Resize the columns
    for (int i = 0; i < lvTimeSheet.Columns.Count; i++)
    {
        lvTimeSheet.Columns[i].Width = -2;
    }
}

<强>输出

enter image description here