zoukankan      html  css  js  c++  java
  • TFS二次开发-基线文件管理器(3)-源码文件的读取

    TFS登录成功后,就可以开始读取源码目录树了。

    一般来说,我不建议将整个树全部读取出来,因为这里不光存有项目文件,还有项目源码。如果全部读取出会是非常大的一棵树。因此我建议只读出根目录,每一次点击打开一级子目录。这样找到自己需要选取的文件即可。

    上一节中,我们已经登录完成。

    //获取选择的项目名称,这里是单项目,一次取pi[0]的名称
    
    pi = tpp.SelectedProjects;
    
    ProjectURL = pi[0].Name;
    
     
    
     
    
    VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;
    
    //此处获取项目第一级文件目录
    
    ItemSet items = version.GetItems(@"$" + ProjectURL, RecursionType.OneLevel); 

    接下来构建项目的第一级目录树。获取的item是一个包括父节点的目录,因此要去除后再添加

    //先清空树
    
    treeView1.Nodes.Clear();
    
    
    //获取父节点
    
    Item SubItem = items.Items[0];
    
    string MainSub = SubItem.ServerItem;
    
    foreach (Item item in items.Items)
    
    {
    
    //去除父节点
    
    if (MainSub == item.ServerItem)
    {
    
    }
    
    else
    
    {
    
    TreeNode tnadd = new TreeNode(item.ServerItem);
    
    tnadd.Name = item.ServerItem;
    
    treeView1.Nodes.Add(item.ServerItem, item.ServerItem);
    
    }
    
    } 

    执行后的效果如下。项目下有两级目录。

    接下来做树的点击事件。通过递归,向点击的节点添加子节点。

     /// <summary>
    
    /// 选择结点后的处理事件
    
    /// </summary>
    
    /// <param name="sender"></param>
    
    /// <param name="e"></param>
    
    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    
    {
    
    if (e.Action != TreeViewAction.Unknown)
    
    {
    
    version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;
    
    ItemSet items = version.GetItems(e.Node.Text, RecursionType.OneLevel);
    
    
    foreach (Item item in items.Items)
    
    {
    
    if (e.Node.Text == item.ServerItem)
    
    {
    
    }
    
    else
    
    {
    
    //这里用name来存储changeset的版本ID,text存显示路径
    
    e.Node.Nodes.Add(item.ServerItem, item.ServerItem, item.ChangesetId);
    
    }
    
    e.Node.Expand();
    
    }
    
    }
    
    }

    最终的效果如下。

  • 相关阅读:
    硬盘安装RedHat,FC和CentOS5.7
    Stanford CoreNLP开源项目的3种编译和运行方式
    Heritrix源码分析(六) Heritrix的文件结构分析
    java里抽象类和接口的区别
    centos 5 手动分区来安装系统的方法
    最大熵工具包的使用
    Heritrix源码分析(五) 如何让Heritrix在Ecplise等IDE下编程启动
    linux配置java环境变量(详细)
    CentOS安装中文支持(linux中文文件名乱码)
    安排会议,使得每个员工能够参加至少两次会议,并使会议总次数最少
  • 原文地址:https://www.cnblogs.com/elvis0123/p/3958080.html
Copyright © 2011-2022 走看看