You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ListView选中文件夹路径异常及文件加载报错求助

问题分析与解决

咱们一步步拆解你遇到的两个问题:

1. 为什么原代码添加的是(Collection)?

你原代码里的listView1.SelectedItems是一个ListViewItem集合,而Path.GetDirectoryName()需要传入一个字符串路径。当你直接把集合传给这个方法时,.NET会自动调用集合的ToString()方法,而默认情况下集合的ToString()就会输出(Collection),这就是为什么ListBox里显示这个内容。

正确的做法是先获取选中的单个ListViewItem(比如第一个选中项),再取它的文本(假设你ListView的Item文本存的是文件夹路径):

if (listView1.SelectedItems.Count > 0)
{
    string folderPath = listView1.SelectedItems[0].Text;
    // 后续操作
}

2. 修改后出现DirectoryNotFoundException的原因

你提到修改成Directory.GetFiles[i].Text,这个写法本身就有问题:

  • Directory.GetFiles()是静态方法,需要传入完整的文件夹路径作为参数,返回的是该文件夹下所有文件的路径数组,根本不能用[i]直接索引访问。
  • 另外,报错路径指向项目Debug文件夹,说明你传入Directory.GetFiles()的路径是相对路径(仅文件夹名称),而不是完整路径。程序默认会以当前工作目录(也就是Debug文件夹)为基准去查找这个文件夹,自然找不到,就抛出了异常。

正确的实现代码

下面是完整的正确代码,包含错误校验和逻辑:

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
    // 先清空ListBox,避免重复添加
    listBox1.Items.Clear();

    // 确保有选中项
    if (listView1.SelectedItems.Count == 0)
        return;

    // 获取选中文件夹的完整路径
    // 注意:如果你的ListView显示的是文件夹名称,不是完整路径,那要把完整路径存在ListViewItem的Tag属性里,比如:
    // string folderPath = listView1.SelectedItems[0].Tag.ToString();
    string folderPath = listView1.SelectedItems[0].Text;

    // 校验路径是否存在
    if (!Directory.Exists(folderPath))
    {
        MessageBox.Show("选中的文件夹路径不存在!");
        return;
    }

    // 获取文件夹下的所有文件(可以加搜索模式,比如*.txt,这里默认所有文件)
    string[] files = Directory.GetFiles(folderPath);

    // 将文件添加到ListBox
    foreach (string file in files)
    {
        listBox1.Items.Add(file);
        // 如果只想显示文件名,不是完整路径,可以用Path.GetFileName(file)
        // listBox1.Items.Add(Path.GetFileName(file));
    }
}

关键注意点

  • 确保ListView的Item存储的是完整文件夹路径,如果只是显示文件夹名称,一定要把完整路径存在Tag属性里(设置Item时:listViewItem.Tag = "完整路径"),否则程序找不到正确的文件夹位置。
  • 每次选中项变化时,记得清空ListBox,避免旧内容残留。
  • 一定要加路径存在的校验,防止用户操作导致的无效路径。

内容的提问来源于stack exchange,提问作者Marco Alba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:15:00