【发布时间】:2018-02-11 15:19:49
【问题描述】:
如果我遗漏了一些简单的东西,我深表歉意,我还在学习。这是我第一次尝试递归。该程序应该执行以下操作,首先我打开我的 FileBrowserDialog,然后列表视图填充所选文件夹中的文件名。但是,当我选择文件夹时,它会填充列表视图,但我看不到任何名称并且我的列表视图会冻结。我知道它填充的原因是滚动条调整。这是我的代码:
#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();
}
【问题讨论】:
-
冻结的原因可能是所选文件夹的层次结构非常大。尝试仅加载选定文件夹的文件名,看看您是否遇到同样的问题。注释
FolderSearch(d);行,并查看它仅使用所选文件夹的文件名填充列表视图。 -
不幸的是,我已经尝试过这个以及使用只有几个文件夹的测试文件夹。似乎没有任何效果。
-
您的代码在加载所选文件夹的文件之前尝试加载所选文件夹的子目录及其文件。因此,如果子目录中没有任何文件,即使所选文件夹中确实有文件,也不会将任何项目添加到列表视图中。
标签: c# windows winforms listview directory