C#编写一个简易的文件管理器
编写一个简易的文件管理器,通过本次实验,练习 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#编写一个简易的文件管理器的更多相关文章
- 基于OpenGL编写一个简易的2D渲染框架-06 编写一个粒子系统
在这篇文章中,我将详细说明如何编写一个简易的粒子系统. 粒子系统可以模拟许多效果,下图便是这次的粒子系统的显示效果.为了方便演示,就弄成了一个动图. 图中,同时显示了 7 种不同粒子效果,看上去效果挺 ...
- 用Java语言编写一个简易画板
讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...
- 基于OpenGL编写一个简易的2D渲染框架-03 渲染基本几何图形
阅读文章前需要了解的知识,你好,三角形:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/ 要 ...
- 基于OpenGL编写一个简易的2D渲染框架-01 创建窗口
最近正在学习OpenGL,我认为学习的最快方法就是做一个小项目了. 如果对OpenGL感兴趣的话,这里推荐一个很好的学习网站 https://learnopengl-cn.github.io/ 我用的 ...
- 使用KVM的API编写一个简易的AArch64虚拟机
参考资料: Linux虚拟化KVM-Qemu分析(一) Linux虚拟化KVM-Qemu分析(二)之ARMv8虚拟化 Linux虚拟化KVM-Qemu分析(三)之KVM源码(1) Linux虚拟化KV ...
- python 正则的使用 —— 编写一个简易的计算器
在 Alex 的博客上看到的对正则这一章节作业是编写一个计算器,要求能计算出下面的算式. 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 + ...
- day-1 用python编写一个简易的FTP服务器
从某宝上购买了一份<Python神经网络深度学习>课程,按照视频教程,用python语言,写了一个简易的FTP服务端和客户端程序,以前也用C++写过聊天程序,编程思路差不多,但是pytho ...
- Python Django 编写一个简易的后台管理工具4-添加admin模版
导入admin后台模版 可以在网上任意搜索模版,我这里也提供一个地址github 拷贝admin后台的html文件至项目的templates文件夹 创建static文件夹,将admin后台的js,im ...
- 基于OpenGL编写一个简易的2D渲染框架-08 重构渲染器-整体架构
事实上,前面编写的渲染器 Renderer 非常简陋,虽然能够进行一些简单的渲染,但是它并不能满足我们的要求. 当渲染粒子系统时,需要开启混合模式,但渲染其他顶点时却不需要开启混合模式.所以同时渲染粒 ...
随机推荐
- 第五篇- 抖音的强大对手来了,用Flutter手撸一个抖音国际版,看看有多炫
前言 由于中间几个月项目天天加班,导致没没时间更新,最近一段时间对前端进行了重构,加了很多页面,如登录.注册.关注.个人中心等,目前写这个纯属业余个人爱好,所以断断续续的继续在做...... 前端地址 ...
- Git拉取远程仓库代码并更新本地仓库
1.git pull:获取最新代码到本地,并自动合并到当前分支 //查询当前远程分支 $ git remote -v //直接拉取并合并最新代码 $ git pull origin master [示 ...
- awk讲义-1-快速入门
awk讲义-1-快速入门 一.目标问题: 1.统计各个省份中城市的数量(一维数组) 2.统计城市中区县数量,要求输出格式:省份 城市 区县数量(二维数组) 3.求两个文件的交集 4.省市和市区两个文件 ...
- CS61b proj1a
得分46.25有一个点的bug不会修(希望大佬带我),style没有注意.1.LinkedListDeque.java public class LinkedListDeque <T>{ ...
- laravel html转pdf
这两天项目中需要将HTML页面转换为PDF文件方便打印,我在网上搜了很多资料.先后尝试了laravel-dompdf和laravel-snappy两种扩展包,个人感觉laravel-snappy比较好 ...
- js开发文档生成工具jsdoc安装使用
1.全局安装jsdoc,需要先安装node环境哦~ npm install -g jsdoc 2.在项目根目录新建文件conf.json,内容如下: { "tags": { &qu ...
- 从此 Typora 代码块有了颜色
起因 平时喜欢用typora记笔记,但是typora默认代码块没有指定语言,没有高亮看着很不舒服,所以用Autohotkey花了半天写了个脚本,按自己的快捷键就可以自动生成代码块并添加语言,这样就方便 ...
- python爬虫-使用线程池与使用协程的实例
背景:爬取豆瓣电影top250的信息 使用线程池 import re from concurrent.futures import ThreadPoolExecutor import requests ...
- 《前端运维》一、Linux基础--05Shell运算符
今天我们来学习下Shell运算符,Shell跟其他的编程语言一样,也支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 那下面,我们就一一来学习一下这些运算符. ...
- Linux上搭建meterSphere
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.安装Docker (1)安装CentOS Docker curl -fsSL https://get.docker.com | bash -s ...