在ListView C#中显示(.txt)中的数据

时间:2018-01-29 13:04:28

标签: c# listview

其实我不知道该怎么称呼,但我仍会尽力解释我的问题。

我在桌面C:\ users \ Dell \ partition.txt上保存了一个文本文件。它的数据如下

Number  Start   End     Size    File system  Name         Flags
 1      524kB   3670kB  3146kB               proinfo
 2      3670kB  8913kB  5243kB               nvram
 3      8913kB  19.4MB  10.5MB  ext4         protect1
 4      19.4MB  29.9MB  10.5MB  ext4         protect2
 5      29.9MB  30.4MB  524kB                lk
 6      30.4MB  30.9MB  524kB                para
 7      30.9MB  47.7MB  16.8MB               boot
 8      47.7MB  64.5MB  16.8MB               recovery
 9      64.5MB  72.9MB  8389kB               logo
10      72.9MB  73.9MB  1049kB               yl_params

我想在C#Winforms中的ListView上显示它,以获得这样的输出

Image1

我见过一些软件在做这件事,但没找到他们的来源。那么在C#Winforms中有没有办法做到这一点。

先谢谢,

1 个答案:

答案 0 :(得分:-1)

您需要的不是ListView。该控件是一个DataGridView,您需要的是将一个标签分隔的CSV文件加载到它上面。你可以使用这样的东西:

private DataTable GetDataTableFromCsv(string path, bool isFirstRowHeader)
{
    string header = isFirstRowHeader ? "Yes" : "No";

    string pathOnly = Path.GetDirectoryName(path);
    string fileName = Path.GetFileName(path);

    string sql = @"SELECT * FROM [" + fileName + "]";

    using(OleDbConnection connection = new OleDbConnection(
              @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + 
              ";Extended Properties=\"Text;HDR=" + header + "\""))
    using(OleDbCommand command = new OleDbCommand(sql, connection))
    using(OleDbDataAdapter adapter = new OleDbDataAdapter(command))
    {
        DataTable dataTable = new DataTable();
        dataTable.Locale = CultureInfo.CurrentCulture;
        adapter.Fill(dataTable);
        return dataTable;
    }
}

然后当你需要加载DataGridView时,只需这样调用它:

YourDataGridView.AutoGenerateColumns = true;
YourDataGridView.DataSource = GetDataTableFromCsv("C:\users\Dell\partition.txt", true);