} public static string DriveTypes(DriveType dt) { string type = ""; switch (dt) { case DriveType.CDRom: type = "光盘驱动器"; break; case DriveType.Fixed: type = "本地磁盘"; break; case DriveType.Network: type = "网络驱动器"; break; case DriveType.Ram: type = "软盘驱动器"; break; case DriveType.Removable: type = "可移动磁盘"; break; case DriveType.Unknown: type = "未知类型驱动器"; break; default: break; } return type;
} //获取文件目录 public void AddNode(string Name) { panel2.Controls.Clear(); if (treeView1.SelectedNode.Text!= "我的电脑") { treeView1.SelectedNode.Nodes.Clear(); } try { int i = 0, j = 0;
foreach (string directory in Directory.GetDirectories(Name)) {
//MessageBox.Show(directory); TreeNode TempNode = new TreeNode(); TempNode.Text = directory.Substring(directory.LastIndexOf(@"\") + 1); TempNode.Tag = directory; TempNode.ImageIndex = 7; PictureBox pc = new PictureBox(); pc.Height = 50; pc.Width = 50; pc.Name = TempNode.Tag.ToString(); pc.Cursor = System.Windows.Forms.Cursors.Hand; pc.Image = imageList2.Images[0]; pc.Tag = "Directory"; pc.DoubleClick += new EventHandler(pc_Click); pc.DoubleClick += new EventHandler(pc_DoubleClick); Label lb = new Label(); lb.Text = TempNode.Text; lb.TextAlign = ContentAlignment.MiddleCenter; lb.Height = 50; lb.Width = 50; pc.Location = new Point(75 * j, 120 * i); lb.Location = new Point(75 * j, 120 * i + 50); j++; if (j % 7 == 0) { i++; j = 0;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;namespace FileManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//生成所有磁盘树
private void Form1_Load(object sender, EventArgs e)
{
TreeNode tr1 = new TreeNode();
tr1.Tag = "我的电脑";
tr1.Text = "我的电脑";
tr1.ImageIndex = 6;
System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
TreeNode tr = new TreeNode();
tr.Tag = drive.Name.ToString();
tr.Text = drive.Name.ToString().Replace(@":\","");
tr = DrivePic(tr, drive.DriveType);
tr1.Nodes.Add(tr);
}
treeView1.Nodes.Add(tr1);
} public TreeNode DrivePic(TreeNode tr,DriveType dt)
{
switch (dt)
{
case DriveType.CDRom: tr.ImageIndex=0;
break;
case DriveType.Fixed: tr.ImageIndex =2;
break;
case DriveType.Network: tr.ImageIndex = 0;
break;
case DriveType.Ram: tr.ImageIndex = 0;
break;
case DriveType.Removable: tr.ImageIndex = 1;
break;
case DriveType.Unknown: tr.ImageIndex = 0;
break;
default: break;
}
return tr;
}
//组成所有磁盘树
public static object[] GetHardDiskFreeSpace(string str_HardDiskName)
{
object[] Space = {"","","",""};
System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
foreach (DriveInfo drive in drives)
{
if (drive.Name == str_HardDiskName)
{
Space[2] = DriveTypes(drive.DriveType);
try
{
decimal Tolsize = decimal.Parse(drive.TotalFreeSpace.ToString());
Tolsize = Tolsize / (1000 * 1000 * 1024);
decimal Tolsize1 = decimal.Parse(drive.TotalSize.ToString());
Tolsize1 = Tolsize1 / (1000 * 1000 * 1024);
Space[0] = Convert.ToString(decimal.Round(Tolsize, 2));
Space[1] = Convert.ToString(decimal.Round(Tolsize1, 2));
Space[3] = drive.DriveFormat;
}
catch
{
return Space;
}
break;
}
}
return Space;
} private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode tr = treeView1.SelectedNode;
if (tr.Tag.ToString().Length < 4)
{
object[] s = GetHardDiskFreeSpace(tr.Tag.ToString());
LblDiskInfos.Text = tr.Tag.ToString().Replace(@":\", "") + " 盘\t剩余容量:" + s[0].ToString() + " GB\t总共容量:" + s[1].ToString() + " GB" + " \n磁盘类型:" + s[2].ToString() + " \t文件系统:" + s[3].ToString();
}
AddNode(treeView1.SelectedNode.Tag.ToString());
}
public static string DriveTypes(DriveType dt)
{
string type = "";
switch (dt)
{
case DriveType.CDRom: type = "光盘驱动器";
break;
case DriveType.Fixed: type = "本地磁盘";
break;
case DriveType.Network: type = "网络驱动器";
break;
case DriveType.Ram: type = "软盘驱动器";
break;
case DriveType.Removable: type = "可移动磁盘";
break;
case DriveType.Unknown: type = "未知类型驱动器";
break;
default: break;
}
return type;
}
//获取文件目录
public void AddNode(string Name)
{
panel2.Controls.Clear();
if (treeView1.SelectedNode.Text!= "我的电脑")
{
treeView1.SelectedNode.Nodes.Clear();
}
try
{
int i = 0, j = 0;
foreach (string directory in Directory.GetDirectories(Name))
{
//MessageBox.Show(directory);
TreeNode TempNode = new TreeNode();
TempNode.Text = directory.Substring(directory.LastIndexOf(@"\") + 1);
TempNode.Tag = directory;
TempNode.ImageIndex = 7; PictureBox pc = new PictureBox();
pc.Height = 50;
pc.Width = 50;
pc.Name = TempNode.Tag.ToString();
pc.Cursor = System.Windows.Forms.Cursors.Hand;
pc.Image = imageList2.Images[0];
pc.Tag = "Directory";
pc.DoubleClick += new EventHandler(pc_Click);
pc.DoubleClick += new EventHandler(pc_DoubleClick);
Label lb = new Label();
lb.Text = TempNode.Text;
lb.TextAlign = ContentAlignment.MiddleCenter;
lb.Height = 50;
lb.Width = 50;
pc.Location = new Point(75 * j, 120 * i);
lb.Location = new Point(75 * j, 120 * i + 50);
j++;
if (j % 7 == 0)
{
i++;
j = 0;
}
panel2.Controls.Add(pc);
panel2.Controls.Add(lb);
treeView1.SelectedNode.Nodes.Add(TempNode);
treeView1.SelectedNode.Nodes[treeView1.SelectedNode.Nodes.Count - 1].EnsureVisible();
}
foreach (string s in Directory.GetFiles(Name))
{
PictureBox pc = new PictureBox();
pc.Height = 50;
pc.Width = 50;
pc.Name = s;
pc.Image = imageList2.Images[1];
pc.Tag = "file";
pc.Cursor = System.Windows.Forms.Cursors.Hand;
//pc.DoubleClick += new EventHandler(pc_Click);
Label lb = new Label();
lb.Text = s.Replace(Name, "");
lb.Text = lb.Text.Replace(@"\", "");
lb.TextAlign = ContentAlignment.MiddleCenter;
lb.Height = 50;
lb.Width = 50;
pc.Location = new Point(75 * j, 120 * i);
lb.Location = new Point(75 * j, 120 * i + 50);
j++;
if (j % 7 == 0)
{
i++;
j = 0;
}
panel2.Controls.Add(pc);
panel2.Controls.Add(lb);
}
}
catch
{ }
} void pc_DoubleClick(object sender, EventArgs e)
{ PictureBox pc = (PictureBox)sender;
TreeNode tnRet = null;
foreach (TreeNode tn in treeView1.Nodes)
{ tnRet = FindNode(tn, pc.Name.ToString());
{
if (tnRet != null)
{
// MessageBox.Show(tnRet.Text);
treeView1.Focus();
treeView1.SelectedNode = tnRet;
break;
}
}
}
} void pc_MouseMove(object sender, MouseEventArgs e)
{
} void pc_Click(object sender, EventArgs e)
{
} private TreeNode FindNode(TreeNode tnParent, string strValue)
{
if (tnParent == null) return null;
if (tnParent.Tag.ToString() == strValue) return tnParent;
TreeNode tnRet = null;
foreach (TreeNode tn in tnParent.Nodes)
{
tnRet = FindNode(tn, strValue);
if (tnRet != null) break;
}
return tnRet;
}
}
}
DirectoryInfo
FileInfo
TreeViewDirectoryInfo.GetDirectories获得所有子目录。
DirectoryInfo.GetFiles获得所有的文件。把获得的子目录和文件绑定到TreeView的节点下,根据是文件还是目录创建不同的节点类型(DirNode:TreeNode,FileNode:TreeNode)。每个节点有Click事件,点击节点时触发这个Click事件,调用另一个方法。
DirectoryInfo.GetDirectories获得所有子目录。
DirectoryInfo.GetFiles获得所有的文件。 把获得的子目录和文件绑定到TreeView的节点下,根据是文件还是目录创建不同的节点类型(DirNode:TreeNode,FileNode:TreeNode)。 能将这几个具体实现吗?