zoukankan      html  css  js  c++  java
  • TFS二次开发-基线文件管理器(4)-标签的创建

    上一节已经完成了源码文件的读取,如果要将已经选择的文件保存为一个标签(Lable)。在VS我们只能对一个目录做标签,非常的不方便。如果用下面的方法,将选择的文件路径保存为一个List在打标签,就非常的灵活了。

    保存为List的方法很简单,需要递归将已经选择的书中的文件保存一下。

    这里为了显示方便,我先将其存入一个Listbox中,

    listBox1.Items.Clear();
    
    for (int i = 0; i < treeView1.Nodes.Count; i++)
    
    {
    
    TreeNode node = treeView1.Nodes[i];
    
    SetTreeViewList(node);
    
    }

    递归选取树中选择的节点并放入到Listbox中

    public void SetTreeViewList(TreeNode nodes)
            {
                //防止节点没有子节点被忽略
                if (nodes.Checked)
                {
                    listBox1.Items.Add(nodes.Text);
                }
                //有子节点
                foreach (TreeNode newNode in nodes.Nodes)
                {
                    if (newNode.Nodes.Count > 0)
                    {
                        SetTreeViewList(newNode);
                    }
                    //判断孩子节点
                    else
                    {
                        if (newNode.Checked)
                        {
                            //显示路径及版本
                            listBox1.Items.Add(newNode.Text);
                        }
    
                    }
                }
    
            }

    下面是将文件路径保存为标签。

    //确定文件数
                int FileNum = listBox1.Items.Count;
                //这个path好似没用,不影响,所以写死了
                string path = "$/test2-agile";
                var versionControlLabel = new VersionControlLabel(version, "标签名称", version.AuthorizedUser, path, "标签注释");
                //建立数组,每一个文件需要一个
                var labelItemSpec = new LabelItemSpec[FileNum];
                for (int i = 0; i < FileNum; i++)
                {
                    string FileURL = TFSCommon.GetFileURL(listBox1.Items[i].ToString());
                    //判断是否为文件,因为有可能选的是路径,所以写了一个判断是否为文件的方法
                    if (!TFSCommon.IsFile(FileURL))
                    {
                        MessageBox.Show("请选择文件");
                        return;
                    }
                    //RecursionType 设置递归类型
                    var itemSpec = new ItemSpec(FileURL, RecursionType.Full);
                    labelItemSpec[i] = new LabelItemSpec(itemSpec, VersionSpec.Latest, false);
                }
                //创建lable
                //LabelChildOption其中三个选项,Fail = 失败, Replace = 替换, Merge = 合并
                var lb = version.CreateLabel(versionControlLabel, labelItemSpec, LabelChildOption.Replace);
                MessageBox.Show(lb[0].Status.ToString());

    这里可以看到,标签的名称和注释可以自己写,比较灵活。在保存Lable的时候有三个选项。分别是失败、替换、合并。

    当遇到同名标签的时候,如果选择失败会提示。如果选择替换会将原有标签替换为这次保存的文件。如果是合并,会将两次的标签合并。

  • 相关阅读:
    2019-5-24-WPF-源代码-从零开始写一个-UI-框架
    2019-8-31-dotnet-通过-WMI-获取系统安装的驱动
    2018-12-18-WPF-一个空的-WPF-程序有多少个窗口
    2018-11-20-UWP-开发中,需要知道的1000个问题
    2019-8-31-C#-已知点和向量,求距离的点
    2018-10-31-C#-7.0-使用下划线忽略使用的变量
    2019-3-16-win10-uwp-鼠标移动到图片上切换图片
    MSP432 BSL流程(UART)
    UART串口简介
    C++ STL容器
  • 原文地址:https://www.cnblogs.com/elvis0123/p/3962370.html
Copyright © 2011-2022 走看看