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。列挙を使用する必要があります。

ListBoxlbz でディレクトリを選択し、そのディレクトリの内容、その中のすべてのファイルを 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 に答える