我使用以下内容将目录枚举到ListBox
:
private void TE_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
IEnumerable<string> file = System.IO.Directory.EnumerateDirectories(@"C:\Users\user\Desktop", "*.*", System.IO.SearchOption.AllDirectories);
foreach (var f in file)
{
lbz.Items.Add(String.Format(f));
}
}
现在,ListBox
显示该给定路径中的所有目录,然后我使用:
private void lbz_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (lbz.SelectedItem != null)
{
if (Directory.Exists(lbz.SelectedItem.ToString()))
{
string[] filePaths = Directory.EnumerateFiles() //:<------
for (int i = 0; i < filePaths.Length; ++i)
{
lbz2.Items.Add(i);
}
}
else
{
tb1.Text = "Directory Doesn't Exist On This Path";
}
}
else
{
tb1.Text = "No Directory Selected";
}
}
箭头是我难倒的地方,因为我使用的是Microsoft Visual Web Developer我不能使用GetFiles
,我必须使用Enumerate。
我希望能够通过在lbz中选择一个目录来填充另一个ListBox
(lbz2),并使该目录中的所有文件显示在lbz2中。
如果:
string[] filePaths = Directory.EnumerateFiles() //:<------
for (int i = 0; i < filePaths.Length; ++i)
{
lbz2.Items.Add(i);
}
不起作用,我愿意接受建议。
答案 0 :(得分:2)
这应该有效:
foreach (var filePath in Directory.EnumerateFiles(lbz.SelectedItem.ToString()))
{
lbz2.Items.Add(filePath);
}
EnumerateFiles返回IEnumerable<string>
,而不是string[]
。