小弟我刚学习C#,以前在中远造船做技术,后来辞职学软件开发,对编程没有一点基础,最近像用C#写个资源管理器,可是写到这里犯难了,树结构打开的时候总有文件提示不是XXX的一部分,小弟百思不得其解,论坛上也没搜索到相关帖子,求助度娘也无果,只好请论坛上的高人指点一下,应该怎样跳过一些受系统保护的文件。感激~namespace 小型资源管理器
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
GetDrivers();
foreach (TreeNode treenode in treeView1.Nodes)
{
if (treenode.Level == 0)
{
GetDirectory(treenode);
GetFile(treenode);
}
}
}
public void GetDrivers()//获取所有的本地磁盘
{
DriveInfo[] di = DriveInfo.GetDrives();
foreach (DriveInfo item in di)
{
if (item.Name.Equals(@"F:\") || item.Name.Equals(@"G:\"))
{
return;
}
else
{
TreeNode tn = new TreeNode();
tn.Text = item.Name;
this.treeView1.Nodes.Add(tn);
}
} }
public void GetDirectory(TreeNode tn)//获取所有的本地磁盘下的文件夹
{
DirectoryInfo[] dir = new DirectoryInfo(tn.Text).GetDirectories();
foreach (DirectoryInfo item in dir)
{
TreeNode tns = new TreeNode();
tns.Text = item.Name;
tns.Tag = item.FullName;
tn.Nodes.Add(tns);
}
}
public void GetFile(TreeNode tn)// 获取文件信息
{
FileInfo[] file = new DirectoryInfo(tn.Text).GetFiles();
foreach (FileInfo item in file)
{
TreeNode tns = new TreeNode();
tns.Text = item.Name;
tns.Tag = item.FullName;
tn.Nodes.Add(tns);
}
} private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)//在节点展开后发生的事件~
{
foreach (TreeNode node in treeView1.SelectedNode.Nodes)
{
MyAfterEcpand(node);
}
}
public void MyAfterEcpand(TreeNode tn)//自己定义的在展开节点以后发生的事情
{
//MessageBox.Show(tn.Tag.ToString());
//MessageBox.Show(tn.Tag.ToString().Contains(@"\").ToString());
if(tn.Tag .ToString().Contains(@"\")){
GetDirectory(tn);
GetFile(tn);
}
}
}
}
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
GetDrivers();
foreach (TreeNode treenode in treeView1.Nodes)
{
if (treenode.Level == 0)
{
GetDirectory(treenode);
GetFile(treenode);
}
}
}
public void GetDrivers()//获取所有的本地磁盘
{
DriveInfo[] di = DriveInfo.GetDrives();
foreach (DriveInfo item in di)
{
if (item.Name.Equals(@"F:\") || item.Name.Equals(@"G:\"))
{
return;
}
else
{
TreeNode tn = new TreeNode();
tn.Text = item.Name;
this.treeView1.Nodes.Add(tn);
}
} }
public void GetDirectory(TreeNode tn)//获取所有的本地磁盘下的文件夹
{
DirectoryInfo[] dir = new DirectoryInfo(tn.Text).GetDirectories();
foreach (DirectoryInfo item in dir)
{
TreeNode tns = new TreeNode();
tns.Text = item.Name;
tns.Tag = item.FullName;
tn.Nodes.Add(tns);
}
}
public void GetFile(TreeNode tn)// 获取文件信息
{
FileInfo[] file = new DirectoryInfo(tn.Text).GetFiles();
foreach (FileInfo item in file)
{
TreeNode tns = new TreeNode();
tns.Text = item.Name;
tns.Tag = item.FullName;
tn.Nodes.Add(tns);
}
} private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)//在节点展开后发生的事件~
{
foreach (TreeNode node in treeView1.SelectedNode.Nodes)
{
MyAfterEcpand(node);
}
}
public void MyAfterEcpand(TreeNode tn)//自己定义的在展开节点以后发生的事情
{
//MessageBox.Show(tn.Tag.ToString());
//MessageBox.Show(tn.Tag.ToString().Contains(@"\").ToString());
if(tn.Tag .ToString().Contains(@"\")){
GetDirectory(tn);
GetFile(tn);
}
}
}
}
foreach (DirectoryInfo item in dir)
{
if(item.Attributes==FileAttributes.Directory)//选择自己需要的属性
{
..... }
}