我正在尝试遍历整个目录树并打印出列表框控件上的所有文件名。我写了一些代码,但有错误。不知道我做错了什么。顺便说一句,这是在Visual Studio中使用WPF的C#。
以下是Visual Studio中的整个项目解决方案:http://tinyurl.com/a2r5jv9
如果您不想下载项目解决方案,请输入以下MainWindow.xaml.cs代码:http://pastebin.com/cWRTeq3N
我也会在这里粘贴代码。
public partial class MainWindow : Window
{
private void Button_Click_1(object sender, RoutedEventArgs e)
{
string sourcePath = @"C:\temp\";
static void DirSearch(string sourcePath)
{
try
{
foreach (string d in Directory.GetDirectories(sourcePath))
{
foreach (string f in Directory.GetFiles(d))
{
listBox1.Items.Add(f);
}
DirSearch(d);
}
}
catch (Exception ex)
{
listBox1.Items.Add(ex.Message);
}
}
}
}
答案 0 :(得分:21)
Microsoft支持网站上有complete example
这里的问题是你要从事件处理程序中调用 DirSearch
,但是你似乎正在尝试定义方法{{1在事件处理程序内部。这是无效的。
您需要按如下方式更改代码:
DirSearch
答案 1 :(得分:12)
使用GetDirectories() overload accepting SearchOption:
string[] dirs = Directory.GetDirectories(path, "*", SearchOption.AllDirectories))
foreach(dir)
{
...
}
或更好EnumerateFiles():
IEnumerable<string> files = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories))
foreach(files)
{
...
}
请注意,它执行 lazy 文件系统扫描。