在ListBox中选择一个目录,并在另一个ListBox中显示所选的directorie文件

时间:2012-07-12 15:48:28

标签: c# silverlight visual-web-developer-2010

我使用以下内容将目录枚举到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); 
}

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

1 个答案:

答案 0 :(得分:2)

这应该有效:

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

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