Visual Studio 2008 可扩展性开发(六):操作Solution Explorer

前言

可扩展性开发(五)中,我介绍了对于Solution、Project、ProjectItem的基本操作。可以认为它们面向的是解决方案内容的物理(文件)表示,我们需要使用VS提供的解决方案管理器(Solution Explorer)来管理它们。毫无疑问,解决方案管理器是VS中最重要的UI元素之一,本文将介绍对它的操作。

工具窗口内的层次结构

如果你观察一下解决方案管理器和服务器管理器(Server Explorer),就会发现它们都使用树形结构来表现背后的数据。在AOM中,UIHierarchyUIHierarchyItemsUIHierarchyItem用于表示这样的层次结构。UIHierarchy表示根节点,它的UIHierarchyItems集合表示其所包含的第一级子节点(UIHierarchyItem),每一个UIHierarchyItem同时也有UIHierarchyItems属性,如此递归下去。这种结构很像它们所表示的数据:Solution、Project以及ProjectItem。在使用这些对象之前,先大致了解一下它们的主要成员:

1)UIHierarchy

Parent:节点对象的父节点;

SelectedItems:当前节点选中的子节点集合;

UIHierarchyItems:当前节点的子节点集合;

DoDefaultAction():对节点进行默认操作,类似于进行双击或按下回车键;

GetItem():按指定路径返回一个子节点;

SelectDown():选中当前选中节点的下个节点;

SelectUp():选中当前选中节点的上个节点;

更多信息请参看MSDN

2)UIHierarchyItems集合

Expanded:获取或设置所表示的节点是否已展开;

Parent:节点集合的父节点;

Item():返回集合中的一项;

更多信息请参看MSDN

3)UIHierarchyItem

IsSelected:获取节点是否被选中;

Name:节点对象的名称;

Select():选中节点;

更多信息请参看MSDN

有了这些知识,我们现在有能力去探索对解决方案管理器的操作了。

CollapseAllProjects示例

项目刚开始的时候,项目的数量也许还不太多,随着程序规模的增大,项目数量也会不断增加,这时要找到某个项目或者某个文件,就变得越来越麻烦,你得先把大量的项目折叠起来。如果有一个命令,可以快速地折叠起所有项目,就方便多了:

collapse-all-projects-menu

这里的思路很简单,只要找到所有的项目节点,依次查看每个项目,如果项目展开了,就把它折叠起来。

0)添加命令

之前我们曾添加过CloseAllDocuments和NPetshopSlnGenerator命令(见可扩展性开发),它们分别加在文本编辑器的标签和Tools菜单上,这里的过程没什么不同:

C# Code - 添加CollapseAllProjects命令
OnConnection()
{
    
    
// Get "Solution Explorer" command bar
    CommandBar slnCommandBar = GetCommandBarByName("Solution");
    
// Add a new command
    AddNamedCommand2(slnCommandBar, COLLAPSE_ALL_PROJECTS_COMMAND_NAME,
        
"Collapse All Projects""Collapse All Projects"false0, slnCommandBar.Controls.Count + 1);
}

QueryStatus()
{
    
    
else if (commandName == GetCommandFullName(COLLAPSE_ALL_PROJECTS_COMMAND_NAME))
    {
        status 
= (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled;
        
return;
    }
}

Exec()
{
    
    
else if (commandName == GetCommandFullName(COLLAPSE_ALL_PROJECTS_COMMAND_NAME))
    {
        CollapseAllProjects();

        handled 
= true;
        
return;
    }
}

NET技术Visual Studio 2008 可扩展性开发(六):操作Solution Explorer,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。