物品未出现在Listview

时间:2017-09-03 00:02:44

标签: c# windows winforms listview directory

如果我错过了一些简单的事情,我会道歉,我还在学习。这是我第一次尝试递归。这个程序应该执行以下操作,首先我打开我的FileBrowserDialog,然后listview使用所选文件夹中的文件名填充。但是,当我选择文件夹时,它会填充列表视图,但我看不到任何名称,我的列表视图会冻结。我知道它填充的原因是滚动条调整。这是我的代码:

#region FileHandlers



    void FolderSearch(string sFol)
    {
        try
        {
            foreach (string d in Directory.GetDirectories(sFol))
            {
                foreach (string f in Directory.GetFiles(d))
                {

                    listView1.Items.Add(f);
                }
                FolderSearch(d);
            }
        }
        catch (System.Exception excpt)
        {
            MessageBox.Show(excpt.Message);
        }
    }

    public void ChooseFolder()
    {
        string pPath;

        if(folderBrowserDialog1.ShowDialog() == DialogResult.OK)
        {
            pPath = folderBrowserDialog1.SelectedPath;

            FolderSearch(pPath);
        }
    }

    #endregion
    void Button1Click(object sender, EventArgs e)
    {
        ChooseFolder();
    }

1 个答案:

答案 0 :(得分:1)

您的代码会跳过所选文件夹,它只会从所选文件夹中的子文件夹中获取文件,因为您首先调用GetDirectories方法,如果您在所选文件夹中没有子文件夹或您的子文件夹没有文件,它什么都没得到。

试试这个

 void FolderSearch(string sFol)
    {
        try
        {
            foreach (string f in Directory.GetFiles(sFol))
            {
                listView1.Items.Add(f);
            }

            foreach (string d in Directory.GetDirectories(sFol))
            {                  
                FolderSearch(d);
            }
        }
        catch (System.Exception excpt)
        {
            MessageBox.Show(excpt.Message);
        }
    }

以及如果您只想使用GetFileName类中的System.IO.Path方法的文件名。 listView1.Items.Add(Path.GetFileName(f));