qq_34612730
2016-05-20 01:06
采纳率: 71.4%
浏览 3.7k

c#wpf递归遍历文件夹,将文件夹的树形结构装入treeviewitem节点的问题

c# wpf递归遍历文件夹,并将文件夹的树形结构装入treeviewitem节点,触发Selected事件的问题

List list1 = new List(); //该集合存储文件路径
//递归遍历指定的目录,并将目录的树形结构装入treeviewitem节点
public void BindTreeView2(string path, TreeViewItem tree1)
{
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] dirs = di.GetDirectories();
foreach (DirectoryInfo i in dirs)
{ //将递归遍历得到的文件夹路径与treeviewitem节点进行对应,并动态创建treeviewitem的Selected事件(选中事件),触发Selected事件,将该目录下得到的所有文件夹和文件路径添加到list1集合,若在文件夹之下遍历到子文件夹则创建子节点与子文件夹对应

                            TreeViewItem ziDt = new TreeViewItem();  
            ziDt.Header = i.Name;
            tree1.Items.Add(ziDt);

            ziDt.Selected += new RoutedEventHandler(delegate (object shabi, RoutedEventArgs r)
            {  //选中节点,通过 MessageBox.Show打印 节点对应文件夹下的所有文件夹和文件路径
                list1.Clear(); //清空之前选中节点所取得的所有路径
                string c = null;
                string[] directory1 = Directory.GetDirectories(i.FullName);
                foreach (string a in directory1)  //将目录下的文件夹路径加到list1
                {
                    list1.Add(a);
                }

                string[] file1 = Directory.GetFiles(i.FullName);
                foreach (string a in file1)      //将目录下的文件路径加到list1
                {
                    list1.Add(a);
                }
                foreach (string a in list1)
                {
                    c = c + "\r\n" + a;
                }
                MessageBox.Show(c); 

            });
            BindTreeView2(i.FullName, ziDt); 
        }

}

图片说明

图片说明

我只想要将被选中的节点所对应的文件夹下的文件和目录路径添加到list集合中,然后输出到对话框,我已经不知道怎么解决了,求大神高手帮助

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • David Bob 2016-05-20 10:08
    已采纳

    在遍历这里重复绑定了,简单的方法: if (item.Header==((TreeViewItem)treeView.SelectedItem).Header)
    MessageBox.Show(c);判定一下即可。

    点赞 打赏 评论

相关推荐