分享

TreeView 与listView实现资源管理器

 busfly 2007-02-10

TreeView 与listView实现资源管理器

分类:.net

环境.net2005,语言C#

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 winformT5
{
    public partial class Form2 : Form
    {
        bool boo = true;

        public Form2()
        {
            InitializeComponent();
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {//首先加上目录到treeview,再把目录与文件加到listview里面
            if (e.Node.Text.ToString().Equals("我的电脑"))
            {
                treeView1.Nodes[0].Nodes.Clear();
                EnumDrivers(e.Node);
            }
            else
            {
                if (boo == false)
                { return; }
               
                int index = treeView1.SelectedNode.Index;
               // string drive=treeView1.Nodes[0].Nodes[index ].Text .ToString ();

                //MessageBox.Show(drive );
                 EnumDrivers2(e.Node );
            }
            if (!e.Node.Text.ToString().Equals("我的电脑"))
            {
                listView1.Clear();
                ShotToList(e.Node );
            }
        }
        private void EnumDrivers(TreeNode t)  //传过来一个树型节点
        {
         foreach (string driver in Directory.GetLogicalDrives())
         {
             TreeNode tn = new TreeNode();
             tn.Text = driver;//.Substring(0,2);
             tn.ImageIndex =1;  //写上这句就有图标,在节点上带图标
             treeView1.SelectedNode.Nodes.Add(tn);
           
             //MessageBox.Show (t.Nodes[ ].Text .ToString());
         }
        }
        private void EnumDrivers2(TreeNode t)
        {
           // MessageBox.Show(t.Text.ToString());
            foreach (string driver in Directory.GetDirectories (t.Text .ToString ()))
            {
                TreeNode tn = new TreeNode();
                tn.Text = driver;  //.Substring(0, 3);
                tn.ImageIndex = 2;  //写上这句就有图标,在节点上带图标
                treeView1.SelectedNode.Nodes.Add(tn);
                tn.Expand();
                //MessageBox.Show (t.Nodes[ ].Text .ToString());
            }
        }
        private void EnumDriversToListViewClick(string str)//当listview双击时产生的事件
        {
            for (int i = 0; i < treeView1.SelectedNode.Nodes.Count; i++)
            {
               if(treeView1.SelectedNode.Nodes[i].Text.ToString().Equals( str))
                {
                    //MessageBox.Show("此文件假是" + treeView1.SelectedNode.Nodes[i].Text.ToString());
                  // treeView1.SelectedNode.Nodes[i].Nodes .Add

                    foreach (string driver in Directory.GetDirectories(treeView1.SelectedNode.Nodes[i].Text.ToString()))
                                {
                                    TreeNode tn = new TreeNode();
                                    tn.Text = driver;  //.Substring(0, 3);
                                    tn.ImageIndex = 2;  //写上这句就有图标,在节点上带图标
                                    treeView1.SelectedNode.Nodes[i].Nodes.Add(tn);
                                    //treeView1.SelectedNode.Nodes.Add(tn);
                                    tn.ExpandAll();
                                    //MessageBox.Show (t.Nodes[ ].Text .ToString());
                                   
                                }
                                boo = false;  //当t等于false时,不执行afterNode事件
                                treeView1.SelectedNode = treeView1.SelectedNode.Nodes[i];
                                boo = true;   //复位

                }
            }

          

            //string strname=str.Substring ( str.LastIndexOf(‘\\‘)+1,str.Length -str.LastIndexOf(‘\\‘)-1);  取文件名函数
            //MessageBox.Show("文件名是"+strname);
            //MessageBox.Show("此文件假数量" + treeView1.SelectedNode.Nodes.Count .ToString ());
          // MessageBox.Show("此文件假数量"+treeView1.SelectedNode.Nodes["C:\\homework"].Nodes.Count .ToString ());
          //  MessageBox.Show("此文件假数量" + treeView1.SelectedNode.Nodes[0].Text.ToString());
           // for (int i; i < treeView1.SelectedNode.Nodes.Count; i++) ;
            //foreach (string driver in Directory.GetDirectories(str))
            //{
            //    TreeNode tn = new TreeNode();
            //    tn.Text = driver;  //.Substring(0, 3);
            //    tn.ImageIndex = 2;  //写上这句就有图标,在节点上带图标
            //    treeView1.SelectedNode.Nodes.Add(tn);
            //    tn.Expand();
            //    MessageBox.Show (t.Nodes[ ].Text .ToString());
            //}
        }
        private void  ShotToList(TreeNode  t){
            foreach (String disname in Directory.GetDirectories(t.Text .ToString ()))//列出所有文件夹
            {
                listView1.Items.Add(disname,2);
            }
            foreach (String filename in Directory.GetFiles(t.Text.ToString())) //列出所有文件
            {
                listView1.Items.Add(filename,3);
            }
        }
        private void ShowToListFromListView(string str)  //当listview双击时执行,列出所有文件与文档
        {
            listView1.Clear();
            foreach (String disname in Directory.GetDirectories(str))//列出所有文件夹
            {
                listView1.Items.Add(disname, 2);

            }
            foreach (String filename in Directory.GetFiles(str)) //列出所有文件
            {
                listView1.Items.Add(filename, 3);
            }
          

        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void listView1_DoubleClick(object sender, EventArgs e)
        {
           //MessageBox.Show(listView1.SelectedItems[0].Text);
           String add = listView1.SelectedItems[0].Text;
           
            EnumDriversToListViewClick(add);
            this.ShowToListFromListView(add);
            //foreach (String disname in Directory.GetDirectories
            //treeView1.SelectedNode = tn;
        }

        private void 大图标ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            listView1.View = View.LargeIcon;
        }

        private void 小图标ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            listView1.View = View.SmallIcon;
        }

        private void 列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            listView1.View = View.List;
        }

        private void listView1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
                contextMenuStrip1.Show();
        }

 

 

    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多