C#编写一个简易的文件管理器
阅读原文时间:2023年07月09日阅读:1

编写一个简易的文件管理器,通过本次实验,练习 TreeView、ListView 和SplitContainer 控件的使用,同时熟悉 C#文件系统的操作方法以及 File 类和 Directory类的使用。

(1)新建 windows 应用程序。

(2)将窗体 Form 的 Text 属性设置为“简易的文件管理器”。

(3)窗体上添加 SplitContainer、TreeView、ListView 控件,设置属性。将 TreeView 控

件的 Dock 属性设置为 Left,ListView 控件的 Dock 属性设置为 Fill,MultiSelect 属性设置为False,View 属性设置为 List。

(4)在 Form1.cs 中,添加对命名空间 using System.IO 的引用。

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace Lab08_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
TreeNode myComputerNode = new TreeNode("我的电脑");
treeView1.Nodes.Add(myComputerNode);
listViewShow(myComputerNode);

    }

    private void splitContainer1\_Panel2\_Paint(object sender, PaintEventArgs e)  
    {

    }  
    private void listViewShow(TreeNode dirNode)  
    {  
        listView1.Clear();  
        if (dirNode.Parent == null)  
        {  
            foreach (string DrvName in Directory.GetLogicalDrives())  
            {  
                ListViewItem aItem = new ListViewItem(DrvName);  
                listView1.Items.Add(aItem);  
            }  
        }  
        else  
        {  
            foreach (string DirName in Directory.GetDirectories((string)dirNode.Tag))  
            {  
                ListViewItem aItem = new ListViewItem(DirName);  
                listView1.Items.Add(aItem);  
            }  
            foreach (string fileName in Directory.GetFiles((string)dirNode.Tag))  
            {  
                ListViewItem aItem = new ListViewItem(fileName);  
                listView1.Items.Add(aItem);  
            }  
        }  
    }  
    private void listViewShow(string dirName)  
    {  
        listView1.Clear();  
        try  
        {  
            foreach (string DirName in Directory.GetDirectories(dirName))  
            {  
                ListViewItem aItem = new ListViewItem(DirName);  
                listView1.Items.Add(aItem);  
            }  
            foreach (string fileName in Directory.GetFiles(dirName))  
            {  
                ListViewItem aItem = new ListViewItem(fileName);  
                listView1.Items.Add(aItem);  
            }  
        }  
        catch  
        {  
        }  
    }  
    private void DirTreeShow(TreeNode dirNode)  
    {  
        try  
        {  
            if (dirNode.Nodes.Count == 0)  
            {  
                if (dirNode.Parent == null)  
                {  
                    foreach (string DrvName in Directory.GetLogicalDrives())  
                    {  
                        TreeNode  aNode= new TreeNode(DrvName);  
                        aNode.Tag=DrvName;  
                        dirNode.Nodes.Add(aNode);  
                    }  
                }  
            }  
            else  
            {  
                foreach(string DirName in Directory.GetDirectories((string)dirNode.Tag))  
                {  
                    TreeNode  aNode=new TreeNode(DirName);  
                    aNode.Tag=DirName;  
                    dirNode.Nodes.Add(aNode);  
                }  
            }  
        }  
        catch  
        {  
        }  
    }

    private void treeView1\_AfterSelect\_1(object sender, TreeViewEventArgs e)  
    {  
        listViewShow(e.Node);  
        DirTreeShow(e.Node);  
    }

    private void listView1\_DoubleClick\_1(object sender, EventArgs e)  
    {  
        foreach (int listIndex in listView1.SelectedIndices)  
        {  
            listViewShow(listView1.Items\[listIndex\].Text);  
        }  
    }

}  

}

页面演示: