【问题标题】:How to get the item and subItem on the ListViewControl?如何获取 ListViewControl 上的 item 和 subItem?
【发布时间】:2013-11-12 09:18:34
【问题描述】:

如何访问 ListViewControl 中的文件? 在初始事件中,我有一个按钮,它使用 foreach 循环在 lsitView 上列出了必要的文件。该控件有 2 项:文件名和文件路径(子项)

DirectoryInfo d = new DirectoryInfo(path);
foreach (FileInfo f in d.GetFiles("*.txt", SearchOption.AllDirectories))
{
    lstProjectFiles.Items.Add(f.Name).SubItems.Add(f.DirectoryName.ToString());
}      

现在,我想显示每个项目的完整路径以及带有扩展名的文件名。

foreach(ListViewItem f in lstView1.Items)
{
    Console.Writeline(f.ToString());
}

当我得到文件名时,输出如下所示。有额外的字符串,而不是 filename.extension:

ListViewItem: {sample.txt}

【问题讨论】:

    标签: c#


    【解决方案1】:

    尝试这样的事情,它正在使用子项目Text Property

    foreach (ListViewItem f in lstProjectFiles.Items)
    {
        Console.WriteLine(f.SubItems[0].Text);
        Console.WriteLine(f.SubItems[1].Text);
    }
    

    【讨论】:

    • 这是完美的。谢谢! :)
    【解决方案2】:

    您只是将文件名加载到列表框中,而不是 FileInfo。

    稍微作弊并将 FileInfo 存储在 Tag 属性中怎么样?

    DirectoryInfo d = new DirectoryInfo(path);
    foreach (FileInfo f in d.GetFiles("*.txt", SearchOption.AllDirectories))
    {
        lstProjectFiles.Items.Add(f.Name).SubItems.Add(f.DirectoryName.ToString()).Tag = f; // Store FileInfo in Tag property
    }
    
    ...
    
    foreach(ListViewItem f in lstView1.Items)
    {
        Console.Writeline(((FileInfo)f.SubItems[0].Tag).FullName);
    }
    

    然后您可以稍后访问 FileInfo 对象中的任何内容。当然,您可能想要重构和验证,但这是您可以采用的一种方法的要点。

    【讨论】:

      猜你喜欢
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 2015-11-17
      • 1970-01-01
      • 2021-04-27
      • 2018-07-04
      相关资源
      最近更新 更多