每日博客
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 的引用。
(5)在 Form1 的构造函数中添加代码:
public Form1()
{
InitializeComponent();
TreeNodemyComputerNode = new TreeNode("我的电脑"); treeView1.Nodes.Add(myComputerNode); listViewShow(myComputerNode);
}
(6)编写 ListView 控件的方法 listViewShow(TreeNodedirNode)。
private void listViewShow(TreeNodedirNode)
{
listView1.Clear();
if (dirNode.Parent == null)
{
foreach (string DrvName in Directory.GetLogicalDrives())
{
ListViewItemaItem = new ListViewItem(DrvName);
listView1.Items.Add(aItem);
}
}
else
{
foreach (string DirName in Directory.GetDirectories((string)dirNode.Tag))
{
ListViewItemaItem = new ListViewItem(DirName);
listView1.Items.Add(aItem);
}
foreach (string fileName in Directory.GetFiles((string) dirNode.Tag))
{
ListViewItemaItem=new ListViewItem(fileName);
listView1.Items.Add(aItem);
}
}
}
(7)编写 listViewShow 的重载方法。
private void listViewShow(string dirName)
{
listView1.Clear();
try
{
foreach (string DirName in Directory.GetDirectories(dirName))
{
ListViewItemaItem = new ListViewItem(DirName);
listView1.Items.Add(aItem);
}
foreach (string fileName in Directory.GetFiles(dirName))
{
ListViewItemaItem = new ListViewItem(fileName);
listView1.Items.Add(aItem);
}
}
catch
{
}
}
(8)编写 DirTreeShow(TreeNodedirNode)方法。
private void DirTreeShow(TreeNodedirNode)
{
try
{
if (dirNode.Nodes.Count == 0)
{
if (dirNode.Parent == null)
{
foreach (string DrvName in Directory.GetLogicalDrives())
{
TreeNodeaNode= new TreeNode(DrvName);
aNode.Tag=DrvName;
dirNode.Nodes.Add(aNode);
}
}
else
{
foreach(string DirName in Directory.GetDirectories((string)dirNode.Tag))
{
TreeNodeaNode=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)单击启动调试工具,运行结果参见下图。
namespace WindowsFormsApplication1
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.treeView1 = new System.Windows.Forms.TreeView();
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
this.打开目录ToolStripMenuItem = new System.Windows.Forms.ToolStripSeparator();
this.打开目录ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.listView1 = new System.Windows.Forms.ListView();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.contextMenuStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
this.splitContainer1.SuspendLayout();
this.SuspendLayout();
this.treeView1.ContextMenuStrip = this.contextMenuStrip1;
this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.treeView1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.treeView1.Location = new System.Drawing.Point(0, 0);
this.treeView1.Name = "treeView1";
this.treeView1.Size = new System.Drawing.Size(237, 619);
this.treeView1.TabIndex = 0;
this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1,
this.toolStripMenuItem2,
this.打开目录ToolStripMenuItem,
this.打开目录ToolStripMenuItem1});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(125, 76);
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(124, 22);
this.toolStripMenuItem1.Text = "打开";
this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click);
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(124, 22);
this.toolStripMenuItem2.Text = "删除";
this.toolStripMenuItem2.Click += new System.EventHandler(this.toolStripMenuItem2_Click);
this.打开目录ToolStripMenuItem.Name = "打开目录ToolStripMenuItem";
this.打开目录ToolStripMenuItem.Size = new System.Drawing.Size(121, 6);
this.打开目录ToolStripMenuItem1.Name = "打开目录ToolStripMenuItem1";
this.打开目录ToolStripMenuItem1.Size = new System.Drawing.Size(124, 22);
this.打开目录ToolStripMenuItem1.Text = "打开目录";
this.打开目录ToolStripMenuItem1.Click += new System.EventHandler(this.打开目录ToolStripMenuItem1_Click);
this.listView1.ContextMenuStrip = this.contextMenuStrip1;
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.listView1.Location = new System.Drawing.Point(0, 0);
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(647, 619);
this.listView1.TabIndex = 1;
this.listView1.UseCompatibleStateImageBehavior = false;
this.listView1.View = System.Windows.Forms.View.Details;
this.listView1.DoubleClick += new System.EventHandler(this.listView1_DoubleClick);
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
this.splitContainer1.Name = "splitContainer1";
this.splitContainer1.Panel1.Controls.Add(this.treeView1);
this.splitContainer1.Panel2.Controls.Add(this.listView1);
this.splitContainer1.Size = new System.Drawing.Size(888, 619);
this.splitContainer1.SplitterDistance = 237;
this.splitContainer1.TabIndex = 3;
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
this.imageList1.Images.SetKeyName(0, "folder.png");
this.imageList1.Images.SetKeyName(1, "page.png");
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(888, 619);
this.Controls.Add(this.splitContainer1);
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "资源管理器";
this.Load += new System.EventHandler(this.Form1_Load);
this.contextMenuStrip1.ResumeLayout(false);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
private System.Windows.Forms.ToolStripSeparator 打开目录ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem 打开目录ToolStripMenuItem1;
private System.Windows.Forms.SplitContainer splitContainer1;
private System.Windows.Forms.ImageList imageList1;
}
}