开发一个程序,要求使用TreeView控件制作一个类似于windows资源管理器的目录结构,并且在该目录结构中选择目录,显示在listview控件中,请高手指点!!!

解决方案 »

  1.   

    MSDN里面TreeView例子就是你要的:
    TreeView control [Windows Forms], ListView controls used with
      

  2.   

    (1)用DirectoryInfo类一层一层地遍历你的文件目录结构,作为节点添加到Treeview中。
    (2)当在Treeview中选中某个项时,treeView1.SelectedNode.Name添加到listview中。
      

  3.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    namespace Test26
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                TreeNode CountNode = new TreeNode("我的电脑");//初始化TreeView控件添加总结点
                TreeViewFile.Nodes.Add(CountNode);
                ListViewShow(CountNode); //初始化ListView控件
            }
            private void ListViewShow(TreeNode NodeDir)//初始化ListView控件,把TrreView控        {
                ListViewFile.Clear();            try
                {
                    if (NodeDir.Parent == null)// 
                    {
                        foreach (string DrvName in Directory.GetLogicalDrives())                   {
                            ListViewItem ItemList = new ListViewItem(DrvName);
                            ListViewFile.Items.Add(ItemList);//添加进来
                        }
                    }
                    else//如果当前TreeView的父结点不为空,把点击的结点,做为一个目录文件的总结点
                    {
                        foreach (string DirName in Directory.GetDirectories((string)NodeDir.Tag))//编历当前分区或文件夹所有目录
                        {
                            ListViewItem ItemList = new ListViewItem(DirName);
                            ListViewFile.Items.Add(ItemList);
                        }
                        foreach (string FileName in Directory.GetFiles((string)NodeDir.Tag))//编历当前分区或文件夹所有目录的文件
                        {
                            ListViewItem ItemList = new ListViewItem(FileName);
                            ListViewFile.Items.Add(ItemList);
                        }//
                    }
                }
                catch { }
            }//
            private void ListViewShow(string DirFileName)//获取当有文件夹内的文件和目录
            {
                ListViewFile.Clear();
                try
                {
                    foreach (string DirName in Directory.GetDirectories(DirFileName))
                    {
                        ListViewItem ItemList = new ListViewItem(DirName);
                        ListViewFile.Items.Add(ItemList);
                    }
                    foreach (string FileName in Directory.GetFiles(DirFileName))
                    {
                        ListViewItem ItemList = new ListViewItem(FileName);
                        ListViewFile.Items.Add(ItemList);
                    }
                }
                catch { }
            }        private void TreeViewShow(TreeNode NodeDir)//初始化TreeView控件
            {
                try
                {
                    if (NodeDir.Nodes.Count == 0)
                    {
                        if (NodeDir.Parent == null)//如果结点为空显示硬盘分区
                        {
                            foreach (string DrvName in Directory.GetLogicalDrives())
                            {
                                TreeNode aNode = new TreeNode(DrvName);
                                aNode.Tag = DrvName;
                                NodeDir.Nodes.Add(aNode);
                            }
                        }// end 
                        else// 不为空,显示分区下文件夹
                        {
                            foreach (string DirName in Directory.GetDirectories((string)NodeDir.Tag))
                            {
                                TreeNode aNode = new TreeNode(DirName);
                                aNode.Tag = DirName;
                                NodeDir.Nodes.Add(aNode);
                            }
                        }
                    }
                }
                catch { }
            }        private void TreeViewFile_AfterSelect(object sender, TreeViewEventArgs e)
            {
                ListViewShow(e.Node);
                TreeViewShow(e.Node);
            }        private void ListViewFile_DoubleClick(object sender, EventArgs e)
            {
                foreach (int ListIndex in ListViewFile.SelectedIndices)
                {
                    ListViewShow(ListViewFile.Items[ListIndex].Text);
                }
            }
        }
    }