如何在listViewItem中的特定列中添加项目

时间:2013-11-04 09:23:41

标签: c# listviewitem

我已使用foreach列出所有项目的文件名。现在,如何在第二列中添加第一列中列出的每个文件的路径?我已经在属性上添加了一个列或集合。

    foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
    {
        string fileName = Path.GetFileName(filePath);
        listViewFiles.Items.Add(fileName);
    }

4 个答案:

答案 0 :(得分:2)

试试这个:

// Set up List View
listViewFiles.View = View.Details;
listViewFiles.Columns.Clear();
listViewFiles.Columns.Add("File name");
listViewFiles.Columns.Add("File path");

// Populate with files and file paths
foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
    string fileName = Path.GetFileName(filePath);
    listView1.Items.Add(fileName).SubItems.Add(new FileInfo(fileName).DirectoryName);
}

编辑:

就个人而言,我发现为这种事情实例化DirectoryInfo更容易,它为您填充了许多有用的字段。所以你可以这样做:

DirectoryInfo di = new DirectoryInfo(path);
foreach (FileInfo fi in di.GetFiles(fileType, SearchOption.AllDirectories))
    listViewFiles.Items.Add(fi.Name).SubItems.Add(fi.DirectoryName);

答案 1 :(得分:1)

如果您想知道如何提取路径(没有文件名),请创建一个FileInfo对象并读出其DirectoryName属性:

var fi = new FileInfo(filename);
var dir = fi.DirectoryName;

答案 2 :(得分:1)

您可以使用SubItems:

foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
    FileInfo fi = new FileInfo(filepath);        
    listViewFiles.Items.Add(fi.Name).SubItems.Add(fi.DirectoryName);
}

编辑:我修改它以拥有文件名和文件目录

答案 3 :(得分:1)

你可以这样做:

foreach (string filePath in Directory.GetFiles(path, fileType, SearchOption.AllDirectories))
{
    string fileName = Path.GetFileName(filePath);
    string directoryName = Path.GetDirectoryName(filePath);
    listViewFiles.Items.Add(fileName, directoryName);
}

有关详细信息,请参阅ListViewItem构造函数。