编写一个简易的文件管理器,通过本次实验,练习 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);
}
} }
}

页面演示:

C#编写一个简易的文件管理器的更多相关文章

  1. 基于OpenGL编写一个简易的2D渲染框架-06 编写一个粒子系统

    在这篇文章中,我将详细说明如何编写一个简易的粒子系统. 粒子系统可以模拟许多效果,下图便是这次的粒子系统的显示效果.为了方便演示,就弄成了一个动图. 图中,同时显示了 7 种不同粒子效果,看上去效果挺 ...

  2. 用Java语言编写一个简易画板

    讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...

  3. 基于OpenGL编写一个简易的2D渲染框架-03 渲染基本几何图形

    阅读文章前需要了解的知识,你好,三角形:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/ 要 ...

  4. 基于OpenGL编写一个简易的2D渲染框架-01 创建窗口

    最近正在学习OpenGL,我认为学习的最快方法就是做一个小项目了. 如果对OpenGL感兴趣的话,这里推荐一个很好的学习网站 https://learnopengl-cn.github.io/ 我用的 ...

  5. 使用KVM的API编写一个简易的AArch64虚拟机

    参考资料: Linux虚拟化KVM-Qemu分析(一) Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化 Linux虚拟化KVM-Qemu分析(三)之KVM源码(1) Linux虚拟化KV ...

  6. python 正则的使用 —— 编写一个简易的计算器

    在 Alex 的博客上看到的对正则这一章节作业是编写一个计算器,要求能计算出下面的算式. 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 + ...

  7. day-1 用python编写一个简易的FTP服务器

    从某宝上购买了一份<Python神经网络深度学习>课程,按照视频教程,用python语言,写了一个简易的FTP服务端和客户端程序,以前也用C++写过聊天程序,编程思路差不多,但是pytho ...

  8. Python Django 编写一个简易的后台管理工具4-添加admin模版

    导入admin后台模版 可以在网上任意搜索模版,我这里也提供一个地址github 拷贝admin后台的html文件至项目的templates文件夹 创建static文件夹,将admin后台的js,im ...

  9. 基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构

    事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒 ...

随机推荐

  1. appium ios 相对坐标点击和控件滑动操作

    环境: 系统:ios 10.13.6 (17G12034) appium:1.14.0 xcode:10.1 iphone:iphone7 12.4 在尝试使用driver.tap([(a,b)],5 ...

  2. SpringCloud Nacos + Ribbon 调用服务的 2 种方法!

    在 Nacos 中,服务调用主要是通过 RestTemplate + Ribbon 实现的,RestTemplate 是 Spring 提供的 Restful 请求实现类,而 Ribbon 是客户端负 ...

  3. CSAPP-Lab03 Attack Lab 记录

    纸上得来终觉浅,绝知此事要躬行 实验概览 Attack!成为一名黑客不正是我小时候的梦想吗?这个实验一定会很有趣. CMU 对本实验的官方说明文档:http://csapp.cs.cmu.edu/3e ...

  4. php 数组汇总

    PHP 5 Array 函数 函数 描述 array() 创建数组. array_change_key_case() 返回其键均为大写或小写的数组. array_chunk() 把一个数组分割为新的数 ...

  5. gitee 的使用

    Git安装教程(windows)   Git是当今最流行的版本控制软件,它包含了许多高级工具,这里小编就讲一下Git的安装. 下载地址:https://git-scm.com/downloads 首先 ...

  6. Ubuntu 16.04.3 Server 版安装过程图文详解

    Ubuntu 16.04.3 Server 版安装过程图文详解 首先,我们会进入系统安装的第一个界面,开始系统的安装操作.每一步的操作,左下角都会提示操作方式! 1.选择系统语言-English2.选 ...

  7. 分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据

    在时间序列工作负载中,应用程序(例如一些实时应用程序查询最近的信息,同时归档旧信息. https://docs.citusdata.com/en/v10.2/sharding/data_modelin ...

  8. Java 8 之 Optional

    Java 8 之 Optional 背景介绍:在我们实际开发中,经常会遇到各种 NullPointerException 报错,为了避免此类问题,需要在业务代码上添加各种if判断,使代码看起来很臃肿, ...

  9. JavaWeb 11_文件上传

    一.操作步骤 1.要有一个form标签,method=post 请求2.form标签的encType属性值必须为multipart/form-data值3.在form标签中使用input type=f ...

  10. Betaflight Configurator开源仓库说明-中文版

    Betaflight Configurator Betaflight Configurator是Betaflight飞行控制系统的跨平台配置工具. 它在Google Chrome中作为应用程序运行,允 ...