Ian*_*Ian 5 c# treeview iostream tfs-sdk
我正在创建一个TFS工具,它将从TFS服务器获取"变更集信息".
现在,我想提供一个"TFS浏览器",以便用户可以浏览他想从中获取信息的"分支/文件夹".
我正在使用TreeView控件和GetItems函数从TFS获取项目的路径:
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Node.Nodes.RemoveAt(0);
RecursionType recursion = RecursionType.OneLevel;
Item[] items = null;
// Get the latest version of the information for the items.
ItemSet itemSet = sourceControl.GetItems(e.Node.Tag.ToString(), recursion);
items = itemSet.Items;
foreach (Item item in items)
{
if (item.ServerItem == e.Node.Tag.ToString()) //Skip self
continue;
string filename = Path.GetFileName(item.ServerItem);
if (Path.GetExtension(filename) == "")
{
TreeNode node = new TreeNode(filename, new TreeNode[] { new TreeNode() });
node.Tag = item.ServerItem;
e.Node.Nodes.Add(node);
}
}
}
Run Code Online (Sandbox Code Playgroud)
下面的代码演示了在点击节点中的"展开"按钮后,应用程序将"查询"当前"分支"(e)下面的项目.
但是,我不想将文件包含在浏览器中.作为快速和脏检查,我正在检查"路径"是否有扩展名,如果没有,则假设它是一个目录并显示它.一切都很好,直到我发现我们有一个名为"v1.1"的文件夹.
有一个解决方案.我可以重新调用GetItems并检查其内容.根据MSDN:
如果path参数是文件,则返回一组仅包含该文件的Items.如果路径是文件夹,则返回一组包含该文件夹中所有项目的项目.如果路径包含通配符,则返回指定文件夹中与通配符匹配的一组Items.
但是,每次调用GetItems大约需要一秒钟,如果文件夹包含多个文件,则节点的"扩展"将永远占用.
那么,有没有办法从TFS获取所有"文件夹"?或者任何其他想法如何检查路径是文件夹还是文件?
谢谢!