C# Read/Import 一个文本文件变成一个ListView

C# Read/Import a text file into a ListView

我需要将文本文件读入 ListView。我已经把它保存到文件中了,但是似乎没有人对读回文件有好的答案。当文件读入时;所有数据都在第一列,而不是显示在适当的 headers.

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

05 / 23 / 2017 10 : 44 13 : 44 3 .00 05 / 23 / 2017 09 : 15 15 : 15 6 .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栏显示工时工资。

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

首先,您应该向列表视图中添加列,并确保 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 行,并将这五行添加为单个 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;
    }
}

输出