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çã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çã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