2017-12-06 18 views
0

フォルダを選択したエクスプローラのようなものをツリービューで表示します。リストボックスにはフォルダ情報が表示されている必要がありますが、フォルダ情報は特定のフォルダが選択されているときに表示されるはずですが、最初のフォルダを選択したときにのみ表示されます。そのフォルダに保存します。ここでは今Windowsフォームのツリービューの表示フォルダ情報

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    DirectoryInfo directoryInfo; 
    private void directoryToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     folderbrowser_dialog.ShowDialog(); 
     if (folderbrowser_dialog.SelectedPath != null) 
     { 
      directoryInfo = new DirectoryInfo(folderbrowser_dialog.SelectedPath); 
      if (directoryInfo.Exists) 
      { 
       BuildTree(directoryInfo, treeview.Nodes); 
      } 
     } 
    } 

    private void resetToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     Application.Restart(); 
    } 

    private void BuildTree(DirectoryInfo directoryInfo, TreeNodeCollection addInMe) 
    { 
     TreeNode root = addInMe.Add(directoryInfo.Name); 
     foreach (DirectoryInfo subdir in directoryInfo.GetDirectories()) 
     { 
      BuildTree(subdir, root.Nodes); 
     }   

     FileInfo[] Files = directoryInfo.GetFiles("*"); 
     foreach (FileInfo file in Files) 
     { 
      listbox.Items.Add(file.Name); 
     } 
    } 
} 

答えて

0

あなたの質問のためのコードが少し不明であるが、それはあなたがツリー内のフォルダを選択するたびにListBoxで正しいファイルを表示する方法を求めているように聞こえます。ここではあなたがそれを行う方法です:あなたはTreeNodeを作成した後、あなたのBuildTree方法で

を、ノードが表すフォルダのFullNameにノード上Nameプロパティを設定します。

その後
private void BuildTree(DirectoryInfo directoryInfo, TreeNodeCollection addInMe) 
{ 
    TreeNode root = addInMe.Add(directoryInfo.Name); 
    root.Name = directoryInfo.FullName; 
    ... 
} 

TreeViewAfterSelectイベントハンドラを追加します。イベントハンドラで、選択したノードのNamee.Node.Name)を使用してDirectoryInfoを作成します。 ListBoxをクリアして、今度はBuildTreeにある同じループを使用して再投入します。

private void treeview_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    DirectoryInfo directoryInfo = new DirectoryInfo(e.Node.Name); 
    FileInfo[] Files = directoryInfo.GetFiles("*"); 
    listbox.Items.Clear(); 
    foreach (FileInfo file in Files) 
    { 
     listbox.Items.Add(file.Name); 
    } 
} 
関連する問題