如果汉语背后没有文化,文化背后没有思想,思想背后没有精神,光TMD编造老娘和乔布斯没有说过的话,那中国永远不会是一个伟大的国家。——撒切尔夫人

刘一辰的软件工程随笔

实验四  文件操作

一、实验目的

1. 掌握窗口控件的使用方法;

2. 掌握文件系统的操作方法、File 类和 Directory类的使用。

二、实验要求

根据要求,编写 C#程序,并将程序代码和运行结果写入实验报告。

三、实验内容

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 的引用。

(5)在 Form1 的构造函数中添加代码:

public Form1()        

{            

InitializeComponent();            

TreeNode myComputerNode = new TreeNode("我的电脑");             treeView1.Nodes.Add(myComputerNode);             listViewShow(myComputerNode);        

}

(6)编写 ListView 控件的方法 listViewShow(TreeNode dirNode)。

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);

}

}

}

(7)编写 listViewShow 的重载方法。

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

{

}

}

(8)编写 DirTreeShow(TreeNode dirNode)方法。

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

{

}

}

(9)编写 TreeView 控件的 AfterSelect 事件代码。

private void  treeView1_AfterSelect_1(object sender, TreeViewEventArgs e)

{

listViewShow(e.Node);

DirTreeShow(e.Node);

}

(10)编写 ListView 控件的 DoubleClick 事件代码。

private void  listView1_DoubleClick(object sender, EventArgs e)

{

foreach (int listIndex in listView1.SelectedIndices)

{

listViewShow(listView1.Items[listIndex].Text);

}

}

(11)单击启动调试工具,运行结果参见下图。

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace text2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

            TreeNode myComputerNode = new TreeNode("此电脑");

            treeView1.Nodes.Add(myComputerNode);

            listViewShow(myComputerNode);

        }

 

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)

        {

            listViewShow(e.Node);

            DirTreeShow(e.Node);

        }

        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 listView1_SelectedIndexChanged(object sender, EventArgs e)

        {

 

        }

 

        private void listView1_DoubleClick_1(object sender, EventArgs e)

        {

            foreach (int listIndex in listView1.SelectedIndices)

            {

                listViewShow(listView1.Items[listIndex].Text);

            }

        }

    }

}

四、实验总结

知道了从哪里设置事件尝试了其他新的事件 学习了listview treenode的相关操作 一开始事件直接复制函数不能运行  后来解决了

posted @   崤函隳  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示