当前位置导航:炫浪网>>网络学院>>编程开发>>Visual C#教程

C#实现文件管理器—by henryqin

在教程中,我会把需要特别注意的东东写出来,所以估计要写的内容还是比较多,但由于最近几天比较忙哈,我可能会分几天时间把教程补充完整,谢谢!

本例,完成的东东是一个文件管理器,Windows资源管理器山寨版。算是一个很简单的教程吧,不涉及数据库,只是做一个winform程序,如果要做成web形式的,基本相同,只需要作小部分地修改。当然,这个文件管理器还存在很多不足,有待于功能和界面上的完善。本例主要是提供给那些和我一样是菜菜的爱好者进行学习,高手呢,可以飘过,当然,能留下您宝贵的指导是最好的,嘿嘿。

下面详细介绍这个小程序能实现的功能:
1.包括TXET文本的新建、复制、粘贴、删除和撤销等文件操作。
2.对文本字体的操作:粗体、下划线和斜体。
3.包括文本夹的新建、复制、粘贴、删除等文件夹操作。
4.五种查看方式:列表、小图标、大图标、标题和详细。

软件界面

文件管理器主界面


进入驱动器D盘后的界面


新建文件界面


新建文件夹界面


文本文档界面

System.IO
System.IO命名空间很重要,它包含了许多的类,以便让托管应用程序可以通过同步或异步方式提供文本I/O以及其他形式的输入和输出方式,从而操作文件系统或流的输入和输出操作。System.IO的命名空间相当庞大,在本例中,主要用到以下几个方面:

1.File类:它提供了打开,创建,复制,移动,重命名文件以及读写文件属性的静态方法.
2.Directory类:它为目录提供编程接口,使应用程序可以通过简单的方法来创建,删除目录.
3.FileStream类:它允许将文件作为流访问,实现标准的输出,输入操作,可随机的访问文件内容.
4.StreamReader与StreamWriter类:它们支持对文本的读写操作,让应用程序可以访问文件或信息流.

下面,简要说一下在例子中用到的几个控件及它们的属性。

ListView
通过ListView控件,可以在标准视图对话框中进行各种操作(查看,打开文件等)。本例中,主要用到以下功能:
1.View:  a LargeIcon:所有选项都在其旁边显示一个大图标和一个标签。
             b SmallIcon:所有选项都在其旁边显示一个小图标和一个标签。
             c List:只显示一列,该列可以包含一个图标和一个标签。
             d Details:可以显示任意数量的列,只有第一列可以包含图像。
2.SelectedItems:这个属性包含了选中选项的集合。
3.MultiSelect:这个属性设置为true,用户可以选择多个选项。
4.LargeImageList:这个属性包含ImageList,其中ImageList包含ListView中要使用的图像。当View属性为LargeIcon时,可以使用图像。
5.SmallImageList:这个属性包含ImageList,其中ImageList包含ListView中要使用的图像。当View属性为SmallIcon时,可以使用图像。

ImageList
ImageList 控件包含 ListImage 对象的集合,该集合中的每个对象都可以通过其索引或关键字被引用。ImageList 控件不能独立使用,只是作为一个便于向其它控件提供图象的资料中心。
语法:ImageList
ImageList 控件的作用象图像的储藏室,同时,它需要第二个控件显示所储存的图像。第二个控件可以是任何能显示图像 Picture 对象的控件,也可以是特别设计的、用于绑定 ImageList 控件的 Windows 通用控件之一。这些控件包括ListView、ToolBar、TabStrip、Header、ImageCombo、和 TreeView 控件。为了与这些控件一同使用 ImageList,必须通过一个适当的属性将特定的 ImageList控件绑定到第二个控件。对于 ListView 控件,必须设置其 Icons 和 SmallIcons 属性为 ImageList 控件。对于 TreeView、TabStrip、ImageCombo、和 Toolbar 控件,必须设置 ImageList 属性为 ImageList 控件。
在设计时,可以用“ImageList 控件属性”对话框的“图像”选项卡来添加图象。在运行时,可以用 Add 方法给 ListImages 集合添加图象。

ContextMenuStrip
ContextMenuStrip 控件提供了与某个控件关联的快捷菜单。也就是说通过这个控件可以方便的实现在别的控件上弹出右键快捷菜单。
例子:
1、先添加一个ContextMenuStrip 控件到Form上
2、设置目标控件(如窗体、文本框等)的ContextMenuStrip属性,指向你刚才添加的ContextMenuStrip 控件。这样就实现了两者的关联。
3、动态将一些菜单项添加到 ContextMenuStrip 控件中,如:
//上下文菜单项
ContextMenuStrip1.Items.Add(msEditNew);
ContextMenuStrip1.Items.Add(msEditBar1);
ContextMenuStrip1.Items.Add(msEditCut);
ContextMenuStrip1.Items.Add(msEditPaste);
ContextMenuStrip1.Items.Add(msEditDelete);
ContextMenuStrip1.Items.Add(msEditBar2);
这样就OK了,你在目标控件上按右键时将弹出快捷菜单。

通过上面的介绍,大家应该能明白本例中要实现的效果,需要用到的控件及重要属性等,下面,就可以切入正题,如何通过编程,实现我们上面提到的功能。呵呵,再提一点,也是比较重要的:C#是一种面向对象的编程语言,因此,在编程之前我们就要有“面向对象编程”的思想,在编程的过程中贯彻这样的思想,
同时,这也是符合目前公司里的编程思想。还有一点,尽量做到代码的规范,可以为以后再次开发或别人阅读我们程序起到简便明了的作用。

主要有两个类:Folder.cs和Txt.cs,分别是对文件和文本的相关操作。类里的方法,我都做了详尽的注释,如果还有什么不明白,可以联系我。

Folder.cs

CODE:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace FileManager.Class
{
    public class Folder
    {
        /// <summary>
        /// 新建文件夹
        /// </summary>
        /// <param name="filename">文件夹名</param>
        /// <param name="path">文件夹路径</param>
        public static void NewFolder(string foldername, string path)
        {
            foldername.Trim();
            //如果输入信息为空,提示
            if (foldername == "")
            {
                MessageBox.Show("目录名不能为空");
                return;
            }
            else
            {
                string FullName = path + "\\" + foldername;
                //如果该文件以及存在
                if (Directory.Exists(FullName))
                {
                    MessageBox.Show("该目录已经存在,请重命名");
                    return;
                }
                else
                {
                    //新建文件夹
                    Directory.CreateDirectory(FullName);
                }
            }
        }

        /// <summary>
        /// 新建文件夹(Enter键触发)
        /// </summary>
        /// <param name="filename">文件夹名</param>
        /// <param name="path">文件夹路径</param>
        public static void Enter(string foldername, string path)
        {
            foldername.Trim();
            if (foldername == "")
            {
                MessageBox.Show("目录名不能为空!");
                return;
            }
            else if (Directory.Exists(path + "\\" + foldername))
            {
                MessageBox.Show("该目录以及存在,请重新命名");
                return;
            }
            else
            {
                Directory.CreateDirectory(path + "\\" + foldername);
            }

        }

        /// <summary>
        /// //获取文件夹名,

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接