Compartilhar via


Como: manipular os modos de exibição de árvore, usando UIHierarchy

Algumas utilizam ferramentas o windows em Visual Studio, como Gerenciador de Soluções, não têm a automação explícita objeto que você pode usar para manipular o conteúdo.Essas janelas de ferramenta, no entanto, têm um modo de exibição de árvore - isto é, um hierárquica, contorno- estilo, o modo de nó — que você pode programaticamente acessar.O objeto de UIHierarchy representa os modos de exibição de árvore nessas janelas de ferramenta e permite que você faça iterações através de elas e exibir o conteúdo de seus nós.

Nome do objeto

Descrição

objeto deUIHierarchy

Representa o modo de exibição de árvore na janela especificada de ferramenta.

coleção deUIHierarchyItems

Representa todos os nós na árvore.

objeto deUIHierarchyItem

Representa um único nó no modo de exibição de árvore.

Usando esses objetos e coleções, você pode:

  • Selecione (única ou multiplica) e exibir nós na árvore.

  • Mova o ponto de inserção para cima ou para baixo na árvore.

  • Retornar o valor do item selecionado ou mande-o executar a ação padrão.

O objeto de ToolWindows (que é retornado também de ToolWindows) permite consultar mais fácil de várias janelas de ferramenta em Visual Studio.Por exemplo, em vez de usar oapplicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)_, agora você pode usar oapplicationObject.ToolWindows.OutputWindow_.

ObservaçãoObservação

As caixas de diálogo e comandos de menu você vê podem diferir daquelas descritas na ajuda dependendo de suas configurações ativas ou versão.Esses procedimentos foram desenvolvidos com as configurações gerais de desenvolvimento ativos.Para alterar as configurações, escolha Importar e ExportarConfigurações no menu de Ferramentas .Para obter mais informações, consulte Configurações de Visual Studio.

Exemplo

Embora o objeto de UIHierarchy representa o conteúdo de praticamente qualquer janela de ferramentas que tem um modo de exibição de árvore, como Gerenciador de Soluções, a própria janela de ferramentas é ainda um objeto de Window .A propriedade de UIHierarchyItems retorna a coleção de nós superiores na janela especificada de ferramenta.Em Gerenciador de Soluções, há apenas um nó de nível superior (a solução).Como consequência, o nó de projeto para essa janela específico está na coleção de nível superior do nó em vez de na coleção de UIHierarchyItems da janela.

Carregando isso em mente, há duas maneiras para acessar um nó específico (UIHierarchyItem) em um modo de exibição de árvore:

  • Usando o método de GetItem para referenciar diretamente o nó desejado usando um padrão de solução/projeto/item.

  • Usando UIHierarchyItems.Item.UIHierarchyItems... (uma coleção/padrão item/coleção).

    Para navegar mais profundo em um aninhamento de nó, manter usando apenas este padrão.Por exemplo, para ir para um subordinado do nó para o nó de nível superior, você usaria UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).

Os exemplos de como usar ambas as técnicas acessar um nó de baixo nível são demonstrados nos exemplos abaixo.

Esses exemplos demonstram do suplemento como referenciar e usar vários membros do modelo de automação de UIHierarchy para listar todos os itens em Gerenciador de Soluções.

O primeiro exemplo usa a estratégia do método de GetItem de acessar o conteúdo do nó references em Gerenciador de Soluções.Para obter mais informações sobre como executar o código do suplemento, consulte Como: compilar e executar os exemplos de código de modelo de objeto de automação.

ObservaçãoObservação

O exemplo para Gerenciador de Soluções envia os dados a uma caixa de mensagem.

Imports System.Text

Public Sub OnConnection(ByVal application As Object, ByVal  _
connectMode As ext_ConnectMode, ByVal addInInst As Object,  _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    listSlnExpNodes(_applicationObject)
End Sub

Sub listSlnExpNodes(dte as DTE2)
    ' Requires reference to System.Text for StringBuilder.
    Dim UIH As UIHierarchy = dte.ToolWindows.SolutionExplorer
    ' Set a reference to the first level nodes in Solution Explorer. 
    ' Automation collections are one-based.
    Dim UIHItem As UIHierarchyItem = _
      UIH.GetItem("MyAddin1\MyAddin1\References")
    Dim file As UIHierarchyItem
    Dim sb As New StringBuilder

    ' Iterate through first level nodes.
    For Each file In UIHItem.UIHierarchyItems
        sb.AppendLine(file.Name)
        ' Iterate through second level nodes (if they exist).
        Dim subitem As UIHierarchyItem
        For Each subitem In file.UIHierarchyItems
            sb.AppendLine("   " & subitem.Name)
        Next
    Next
    MsgBox(sb.ToString)
End Sub
using System.Text;

public void OnConnection(object application, ext_ConnectMode _
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    listSlnExpNodes(_applicationObject);
}

public void listSlnExpNodes(DTE2 dte)
{
    // Requires reference to System.Text for StringBuilder.
    UIHierarchy UIH = dte.ToolWindows.SolutionExplorer;
    // Set a reference to the first level nodes in Solution Explorer. 
    // Automation collections are one-based.
    UIHierarchyItem UIHItem = 
      UIH.GetItem("MyAddin1\\MyAddin1\\References");
    StringBuilder sb = new StringBuilder();

   // Iterate through first level nodes.
   foreach ( UIHierarchyItem file in UIHItem.UIHierarchyItems )
   {
       sb.AppendLine(file.Name);
       // Iterate through second level nodes (if they exist).
       foreach ( UIHierarchyItem subitem in file.UIHierarchyItems )
       {
           sb.AppendLine("   "+subitem.Name);
       }
   }
   MessageBox.Show(sb.ToString());
}

O exemplo a seguir ilustra como usar UIHierarchy para listar o conteúdo do modo de exibição de árvore da janela de Gerenciador de Soluções .

Sub cvTreeView()
    Dim uih As UIHierarchy = DTE.ToolWindows.SolutionExplorer
    Dim uihItem As UIHierarchyItem
    Dim uihItems As UIHierarchyItems = uih.UIHierarchyItems
    Dim msg As String
    For Each uihItem In uihItems
        msg += uihItem.Name & vbCr
    Next
    MsgBox(msg)
End Sub

Consulte também

Tarefas

Como: controle Solution Explorer

Como: alterar as características da janela

Conceitos

Gráfico de modelo de objeto de automação

Outros recursos

Criar e controlar o ambiente Windows

A criação de suplementos e assistentes

Automação e extensibilidade referência