代码如下,path为一级文件夹目录,怎么修改可以只读到5级文件夹就停止,而不是读完全部?(读出的结构是放在treeView里)
public void listTreeNode(string path)
{
List<TreeNode> list = new List<TreeNode>();
DirectoryInfo dirInfo = new DirectoryInfo(path);
FileSystemInfo[] dir = dirInfo.GetFileSystemInfos();
foreach (FileSystemInfo di in dir)
{
if (di.Attributes == (System.IO.FileAttributes.Hidden | System.IO.FileAttributes.System | System.IO.FileAttributes.Directory))
{
continue;
}
TreeNode treeNode = new TreeNode(di.Name, ListFiles(di).ToArray());
list.Add(treeNode);
}
TreeNode node = new TreeNode(path, list.ToArray());
treeView1.Nodes.Add(node);
node.Expand();
}
public List<TreeNode> ListFiles(FileSystemInfo fileinfo)
{
List<TreeNode> nodeList = new List<TreeNode>();
if (!fileinfo.Exists)
return null;
DirectoryInfo dirinfo = fileinfo as DirectoryInfo;
if (dirinfo == null)
return null;
FileSystemInfo[] files = dirinfo.GetFileSystemInfos();
for (int i = 0; i < files.Length; i++)
{
DirectoryInfo subdir = files[i] as DirectoryInfo;
if (subdir == null)
{
continue;
}
TreeNode tnode = new TreeNode(subdir.Name, ListFiles(files[i]).ToArray());
nodeList.Add(tnode);
}
return nodeList;
}
7 个解决方案
#1
public List<TreeNode> ListFiles(FileSystemInfo fileinfo,
level = 0)
if (level < 5)
TreeNode tnode = new TreeNode(subdir.Name, ListFiles(files[i]).ToArray());
if (level < 5)
TreeNode tnode = new TreeNode(subdir.Name, ListFiles(files[i]).ToArray());
#2
不懂。。。
#3
TreeNode tnode = new TreeNode(subdir.Name, ListFiles(files[i], level + 1).ToArray());
#4
定义一个变量不就行啦
#5
递归的函数加个变量,>5直接return
#6
#7
显示树状二级菜单自己修改成多级菜单
// 将MenuStrip控件中的多层命今项添加到TreeView控件中
// <param newNodeA="TreeNode">TreeNode对象</param>
// <param newmenuA="ToolStripDropDownItem">ToolStripDropDownItem对象</param>
// <param BL="bool">标识(是否可用)</param>
public void GetCavernMenu(TreeNode newNodeA, ToolStripDropDownItem newmenuA, bool BL)
{
bool Var_Bool = true;
if (newmenuA.HasDropDownItems && newmenuA.DropDownItems.Count > 0)
for (int j = 0; j < newmenuA.DropDownItems.Count; j++) //遍历二级菜单项
{
//将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
TreeNode newNodeB = newNodeA.Nodes.Add(newmenuA.DropDownItems[j].Text);
Var_Bool = true;
if (BL == false)//判断当前命令项的上一级命令是否可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
if (newmenuA.DropDownItems[j].Enabled == false)//判断当前命令项是否为可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
newNodeA.ForeColor = Color.Black;//设置当前命令项的字体颜色为可用色
newNodeB.Tag = int.Parse(newmenuA.DropDownItems[j].Tag.ToString());//标识,显示相应的窗体
}
}
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenuB = (ToolStripDropDownItem)newmenuA.DropDownItems[j];
if (newmenuB.HasDropDownItems && newmenuA.DropDownItems.Count > 0)//如果当前命令项有子项
{
newNodeB.Tag = 0;//标识,有子项的命令项
GetCavernMenu(newNodeB, newmenuB, Var_Bool);//调用递归方法
}
}
}
// 将MenuStrip控件中的多层命今项添加到TreeView控件中
// <param newNodeA="TreeNode">TreeNode对象</param>
// <param newmenuA="ToolStripDropDownItem">ToolStripDropDownItem对象</param>
// <param BL="bool">标识(是否可用)</param>
public void GetCavernMenu(TreeNode newNodeA, ToolStripDropDownItem newmenuA, bool BL)
{
bool Var_Bool = true;
if (newmenuA.HasDropDownItems && newmenuA.DropDownItems.Count > 0)
for (int j = 0; j < newmenuA.DropDownItems.Count; j++) //遍历二级菜单项
{
//将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
TreeNode newNodeB = newNodeA.Nodes.Add(newmenuA.DropDownItems[j].Text);
Var_Bool = true;
if (BL == false)//判断当前命令项的上一级命令是否可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
if (newmenuA.DropDownItems[j].Enabled == false)//判断当前命令项是否为可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
newNodeA.ForeColor = Color.Black;//设置当前命令项的字体颜色为可用色
newNodeB.Tag = int.Parse(newmenuA.DropDownItems[j].Tag.ToString());//标识,显示相应的窗体
}
}
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenuB = (ToolStripDropDownItem)newmenuA.DropDownItems[j];
if (newmenuB.HasDropDownItems && newmenuA.DropDownItems.Count > 0)//如果当前命令项有子项
{
newNodeB.Tag = 0;//标识,有子项的命令项
GetCavernMenu(newNodeB, newmenuB, Var_Bool);//调用递归方法
}
}
}
#1
public List<TreeNode> ListFiles(FileSystemInfo fileinfo,
level = 0)
if (level < 5)
TreeNode tnode = new TreeNode(subdir.Name, ListFiles(files[i]).ToArray());
if (level < 5)
TreeNode tnode = new TreeNode(subdir.Name, ListFiles(files[i]).ToArray());
#2
不懂。。。
#3
TreeNode tnode = new TreeNode(subdir.Name, ListFiles(files[i], level + 1).ToArray());
#4
定义一个变量不就行啦
#5
递归的函数加个变量,>5直接return
#6
#7
显示树状二级菜单自己修改成多级菜单
// 将MenuStrip控件中的多层命今项添加到TreeView控件中
// <param newNodeA="TreeNode">TreeNode对象</param>
// <param newmenuA="ToolStripDropDownItem">ToolStripDropDownItem对象</param>
// <param BL="bool">标识(是否可用)</param>
public void GetCavernMenu(TreeNode newNodeA, ToolStripDropDownItem newmenuA, bool BL)
{
bool Var_Bool = true;
if (newmenuA.HasDropDownItems && newmenuA.DropDownItems.Count > 0)
for (int j = 0; j < newmenuA.DropDownItems.Count; j++) //遍历二级菜单项
{
//将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
TreeNode newNodeB = newNodeA.Nodes.Add(newmenuA.DropDownItems[j].Text);
Var_Bool = true;
if (BL == false)//判断当前命令项的上一级命令是否可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
if (newmenuA.DropDownItems[j].Enabled == false)//判断当前命令项是否为可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
newNodeA.ForeColor = Color.Black;//设置当前命令项的字体颜色为可用色
newNodeB.Tag = int.Parse(newmenuA.DropDownItems[j].Tag.ToString());//标识,显示相应的窗体
}
}
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenuB = (ToolStripDropDownItem)newmenuA.DropDownItems[j];
if (newmenuB.HasDropDownItems && newmenuA.DropDownItems.Count > 0)//如果当前命令项有子项
{
newNodeB.Tag = 0;//标识,有子项的命令项
GetCavernMenu(newNodeB, newmenuB, Var_Bool);//调用递归方法
}
}
}
// 将MenuStrip控件中的多层命今项添加到TreeView控件中
// <param newNodeA="TreeNode">TreeNode对象</param>
// <param newmenuA="ToolStripDropDownItem">ToolStripDropDownItem对象</param>
// <param BL="bool">标识(是否可用)</param>
public void GetCavernMenu(TreeNode newNodeA, ToolStripDropDownItem newmenuA, bool BL)
{
bool Var_Bool = true;
if (newmenuA.HasDropDownItems && newmenuA.DropDownItems.Count > 0)
for (int j = 0; j < newmenuA.DropDownItems.Count; j++) //遍历二级菜单项
{
//将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
TreeNode newNodeB = newNodeA.Nodes.Add(newmenuA.DropDownItems[j].Text);
Var_Bool = true;
if (BL == false)//判断当前命令项的上一级命令是否可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
if (newmenuA.DropDownItems[j].Enabled == false)//判断当前命令项是否为可用
{
newNodeB.ForeColor = Color.Silver;//设置当前命令项的字体颜色为不可用色
newNodeB.Tag = 0;//标识,不显示相应的窗体
Var_Bool = false;
}
else
{
newNodeA.ForeColor = Color.Black;//设置当前命令项的字体颜色为可用色
newNodeB.Tag = int.Parse(newmenuA.DropDownItems[j].Tag.ToString());//标识,显示相应的窗体
}
}
//将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
ToolStripDropDownItem newmenuB = (ToolStripDropDownItem)newmenuA.DropDownItems[j];
if (newmenuB.HasDropDownItems && newmenuA.DropDownItems.Count > 0)//如果当前命令项有子项
{
newNodeB.Tag = 0;//标识,有子项的命令项
GetCavernMenu(newNodeB, newmenuB, Var_Bool);//调用递归方法
}
}
}