我使用以下命令将目录枚举到 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 中选择一个目录并将该目录内容以及其中的所有文件显示在 lbz2 中来填充另一个 ListBox
(lbz2)。
如果:
string[] filePaths = Directory.EnumerateFiles() //:<------
for (int i = 0; i < filePaths.Length; ++i)
{
lbz2.Items.Add(i);
}
不起作用,我愿意接受建议。
最佳答案
这应该有效:
foreach (var filePath in Directory.EnumerateFiles(lbz.SelectedItem.ToString()))
{
lbz2.Items.Add(filePath);
}
EnumerateFiles 返回 IEnumerable<string>
,不是string[]
。
关于c# - 在列表框中选择一个目录并在另一个列表框中显示所选目录的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11455647/