我想要一种算法,它从用户指定的目录开始生成文件结构,但只显示特定类型的文件(.resx)。到目前为止,我有下面的代码,它显示了文件结构并仅显示.resx文件,但问题是它显示了所有不包含.resx文件的目录。即如果treeviewitem或其任何子节点不包含.resx文件,则不应该存在。
void DirSearch(string sDir, TreeViewItem parentItem)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
TreeViewItem item = new TreeViewItem();
item.Header = d;
parentItem.Items.Add(item);
foreach (string f in Directory.GetFiles(d, "*.resx"))
{
TreeViewItem subitem = new TreeViewItem();
subitem.Header = f;
subitem.Tag = f;
item.Items.Add(subitem);
}
DirSearch(d, item);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
答案 0 :(得分:1)
将表示目录的TreeViewItem添加到其父 ,如果它有子项(* .resx文件或包含* .resx文件的子目录)。请注意,在进行检查之前,会递归调用DirSearch。
void DirSearch(string sDir, TreeViewItem parentItem)
{
......
foreach (string d in Directory.GetDirectories(sDir))
{
TreeViewItem item = new TreeViewItem();
item.Header = d;
foreach (string f in Directory.GetFiles(d, "*.resx"))
{
TreeViewItem subitem = new TreeViewItem();
subitem.Header = f;
subitem.Tag = f;
item.Items.Add(subitem);
}
DirSearch(d, item);
if (item.Items.Count > 0)
parentItem.Items.Add(item);
}
......
}