zoukankan      html  css  js  c++  java
  • KuaiShou Sync 一个有关Visual Studio.NET 的插件 时空地图TimeGIS

    Visual Studio.Net 打开一个工程的时候,有时候子项目很多,而且你有不是很熟悉这个项目。

    然后你查找某个关键字,打开一个文件,你需要知道它在Solution Explorer中属于哪里,也就是高亮这个文件节点,

    你应该怎么做?这里提供一个办法供你参考。

    我们知道 Visual Studio.Net 提供了可扩展性开发的功能,也就是插件功能,比较有名的是Visual AssistX

    另外有很多文章介绍如何开发插件,

    http://www.cnblogs.com/anderslly/archive/2009/02/25/first-macro-addin.html

    http://www.cnblogs.com/anderslly/archive/2009/02/28/vs-addin-explained-part1.html

    http://www.cnblogs.com/anderslly/archive/2009/03/03/vs-addin-explained-part2.html

    我的方法是先得到就是从SolutionExplorer的Item中一个个找当前的ProjectItem,然后高亮,很简单。

    相关代码如下,请指教

     1        public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
     2        {
     3            handled = false;
     4            if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
     5            {
     6                if(commandName == "SyncAddin.Connect.SyncAddin")
     7                {
     8                    DoSync();
     9                    handled = true;
    10                    return;
    11                }

    12            }

    13        }

    14
    15        private bool bFound;
    16        public void DoSync()
    17        {
    18            //_applicationObject.ActiveDocument.ProjectItem.ExpandView();
    19
    20            ProjectItem projectitem = _applicationObject.ActiveDocument.ProjectItem;
    21
    22            UIHierarchy UIH = _applicationObject.ToolWindows.SolutionExplorer;
    23            UIH.Parent.SetFocus();
    24
    25            // Requires a reference to System.Text.
    26            // Set a reference to the first level nodes in Solution Explorer. 
    27            // Automation collections are one-based.
    28            UIHierarchyItem UIHItem = UIH.UIHierarchyItems.Item(1);
    29
    30            bFound = false;
    31            RecursiveFindItem(projectitem, UIHItem);
    32        }

    33
    34        private void RecursiveFindItem(ProjectItem projectItem, UIHierarchyItem item)
    35        {
    36            if (bFound == truereturn;
    37            if (projectItem == nullreturn;
    38            if (item == nullreturn;
    39
    40            if (projectItem.Name == item.Name)
    41            {
    42                item.Select(vsUISelectionType.vsUISelectionTypeSelect);
    43                bFound = true;
    44                return;
    45            }

    46
    47            foreach (UIHierarchyItem subitem in item.UIHierarchyItems)
    48                RecursiveFindItem(projectItem, subitem);
    49        }

    50

    整个项目(for vs 2008) 从这里下载:/Files/kuaishou/SyncAddin.7z

  • 相关阅读:
    一百一十五:CMS系统之实现点击更换图形验证码功能
    python用cx_Oracle连接oracle
    一百一十四:CMS系统之图形验证码生成
    一百一十三:CMS系统之前台注册界面
    一百一十二:CMS系统之前台用户模型
    一百一十一:CMS系统之后端权限验证功能
    前端开发之JavaScript HTML DOM理论篇二
    前端开发之JavaScript HTML DOM理论篇一
    前端开发之JavaScript基础篇四
    前端开发之JavaScript基础篇三
  • 原文地址:https://www.cnblogs.com/kuaishou/p/1595314.html
Copyright © 2011-2022 走看看