小弟我刚学习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);
}
}
}
}
解决方案 »
- c#调用JAVA写的WebService 传输XML <>被转义了如何处理?
- 查找listbox中的数据重复次数最多的数据
- 怎么给自定义的Lable加Click 时间
- 一段代码,怎么改可以变成里面的内容是可变的?
- 一个简单的算法问题,如何循环生成一个排列组合表
- 快捷键(ctrl+Q)
- 文件下载功能实现不了,好心人帮帮忙啊~
- 水晶报表的困惑??
- dataSet中表的关系如何在xml中体现?
- datagrid中的数据怎样实现打印或导出数据功能?~(高手请进)
- 在C#里引用SharpGL,找不到一些教程里提到的GLfloat,GLint??(教程是基于C++的)
- 多文档WinForm DataGridView行验证问题
foreach (DirectoryInfo item in dir)
{
if(item.Attributes==FileAttributes.Directory)//选择自己需要的属性
{
..... }
}