如何访问ListViewControl中的文件? 在初始事件中,我有一个按钮,使用foreach循环在lsitView上列出必要的文件。该控件有2个项目:文件名和&文件路径(subItem)
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}
答案 0 :(得分:1)
您只是将文件名加载到列表框中,而不是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对象中的任何内容。当然你可能想要重构&验证,但这是你可以采取的一种方法的要点。
答案 1 :(得分:1)
尝试类似这样的事情,使用SubItems Text Property。
foreach (ListViewItem f in lstProjectFiles.Items)
{
Console.WriteLine(f.SubItems[0].Text);
Console.WriteLine(f.SubItems[1].Text);
}