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

问题描述

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 + "rn" + a;
                }
                MessageBox.Show(c); 

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

}

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

解决方案

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

时间: 2024-09-10 17:54:12

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

PHP递归遍历指定目录的文件并统计文件数量的方法_php技巧

本文实例讲述了PHP递归遍历指定目录的文件并统计文件数量的方法.分享给大家供大家参考.具体实现方法如下: <?php //递归函数实现遍历指定文件下的目录与文件数量 function total($dirname,&$dirnum,&$filenum){ $dir=opendir($dirname); echo readdir($dir)."<br>"; //读取当前目录文件 echo readdir($dir)."<br>&qu

PHP递归遍历指定目录的文件并统计文件数量的方法

 这篇文章主要介绍了PHP递归遍历指定目录的文件并统计文件数量的方法,涉及php文件及目录操作的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了PHP递归遍历指定目录的文件并统计文件数量的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <?php //递归函数实现遍历指定文件下的目录与文件数量 function total($di

PHP不用递归遍历目录下所有文件的代码_php实例

实现代码: /** * PHP 非递归实现查询该目录下所有文件 * @param unknown $dir * @return multitype:|multitype:string */ function scanfiles($dir) { if (! is_dir ( $dir )) return array (); // 兼容各操作系统 $dir = rtrim ( str_replace ( '\\', '/', $dir ), '/' ) . '/'; // 栈,默认值为传入的目录 $

php递归遍历和和删除文件夹下的所有文件

php递归删除目录下的所有文件: <?php header("content-type:text/html;charset=utf-8"); /** *删除指定目录()删除子目录和文件 *@path 文件目录路径 string *@return void */ function hello($path){ //1:判断删除目录是否存在 if(!file_exists($path)){ return false; } //2:将目录内容全部获取出 $list = scandir($

Perl脚本实现递归遍历目录下的文件_perl

#!/usr/bin/perl -w use strict; use File::Spec; local $\ ="\n";#当前模块的每行输出加入换行符 my %options; #目录路径 $options{single_case} = '/home/jiangyu/src/pl/Example'; my @cases; if (-d $options{single_case}) {#判断目录是否存在 my @files; my $dh; push(@files, $options

PHP教程:不用递归遍历目录下的文件

  如果要遍历某个目录下的所有文件(包括子目录),最首先想到的思路就是用递归:先处理当前目录,再处理当前目录下的子目录.不用递归可不可以呢?以前学数据结构的时候看到过,递归其实是利用堆栈来实现的,递归的特点就是不断的调用自身,最后一次的调用是最先执行完的,倒数第二次调用是其次执行完的,依次类推,最初的调用是最后执行完的.如果理解了递归的原理,其实就可以把所有用递归的实现转化为非递归的实现. 用非递归方式遍历某个目录下的所有文件,思路主要分三步: 1. 创建一个数组,将要遍历的这个目录放入;(其实

关于递归遍历文件夹的问题,求大神们指教。

问题描述 关于递归遍历文件夹的问题,求大神们指教. 递归遍历文件夹中的内容已经可以实现.但是有个问题不会解决.求大神们帮忙.比如说一个文件夹(一级目录)里面还有多个文件夹(二级目录),二级目录里面包含各种文件. 我想获取各个二级目录,以及二级目录里面的文件,该如何获取.求大神指点! 解决方案 不知道你是什么语言,说下思路吧:假设你获取文件夹内文件的方法叫search,传递参数为文件夹路径: 1传递根目录到search方法,遍历每个文件: 2判断每个文件是文件还是文件夹,是文件加入列表,是文件夹将

PHP递归遍历指定文件夹内的文件实现方法

今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下. 发现php的文件夹函数好像没有提供遍历文件夹下的所有文件(包括子目录中的文件),于是,就想自己实现一个. 在写的时候发现一些操作文件夹的函数并不是自己想的那样.比如,dirname()根据提供的完整文件路径来取得文件所在的文件夹的路径,但如果你传入的是文件夹,它取的就是它的父文件夹.这点要明白.basename()也是同样的道理,传入文件夹路径取得就是

php递归遍历之遍历文件夹下的所有文件和子文件

写一个函数,能够遍历一个文件夹下的所有文件和子文件夹.  代码如下 复制代码 $dirs='e:/pdf';  function FileShow($dirs) {      $dir=opendir($dirs);      while ($f=readdir($dir)) {      if($f != '.' && $f != '..'){      $file=$dirs.'/'.$f;      if(is_file($file)){          echo 'FileNam