2

我使用以下方法将目录枚举为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。

我希望能够ListBox通过在 lbz 中选择一个目录并将该目录的内容(其中的所有文件)显示在 lbz2 中来填充另一个(lbz2)。

如果:

string[] filePaths = Directory.EnumerateFiles() //:<------
for (int i = 0; i < filePaths.Length; ++i) 
{
    lbz2.Items.Add(i); 
}

不起作用,我愿意接受建议。

4

1 回答 1

2

这应该有效:

foreach (var filePath in Directory.EnumerateFiles(lbz.SelectedItem.ToString()))
{
    lbz2.Items.Add(filePath); 
}

EnumerateFiles 返回IEnumerable<string>,而不是string[]

于 2012-07-12T15:51:11.390 回答