Procedura: modificare le visualizzazioni ad albero mediante UIHierarchy
I componenti aggiuntivi di Visual Studio sono deprecati in Visual Studio 2013. Si consiglia di effettuare l'aggiornamento dei componenti aggiuntivi alle estensioni di VSPackage. Per ulteriori informazioni sull'aggiornamento, consultare Domande frequenti: conversione di componenti aggiuntivi in VSPackage Extensions.
Alcune finestre degli strumenti di Visual Studio, come Esplora soluzioni, non dispongono di oggetti di automazione espliciti utilizzabili per modificare il contenuto. Queste finestre degli strumenti dispongono, tuttavia, di una visualizzazione struttura ad albero, ovvero di una visualizzazione dei nodi dalla struttura gerarchica alla quale è possibile accedere a livello di codice. L'oggetto UIHierarchy rappresenta le visualizzazioni struttura ad albero in queste finestre degli strumenti e consente di scorrerle e di visualizzare il contenuto dei relativi nodi.
Nome oggetto |
Descrizione |
---|---|
Oggetto UIHierarchy |
Rappresenta la visualizzazione struttura ad albero della finestra degli strumenti specificata. |
Raccolta UIHierarchyItems |
Rappresenta tutti i nodi nella visualizzazione struttura ad albero. |
Oggetto UIHierarchyItem |
Rappresenta un singolo nodo nella visualizzazione struttura ad albero. |
Questi oggetti e queste raccolte consentono di:
Selezionare (nodo per nodo o più nodi contemporaneamente) e visualizzare i nodi nella visualizzazione struttura ad albero.
Spostare il punto di inserimento verso l'alto o verso il basso nella visualizzazione struttura ad albero.
Restituire il valore dell'elemento selezionato o fare in modo che esegua l'azione predefinita.
L'oggetto ToolWindows (restituito anche da ToolWindows) consente di fare riferimento in modo più semplice alle diverse finestre degli strumenti di Visual Studio. Ad esempio, anziché utilizzare _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) è ora possibile utilizzare _applicationObject.ToolWindows.OutputWindow.
Nota
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma.Queste procedure sono state sviluppate con le Impostazioni generali per lo sviluppo attive.Per modificare le impostazioni, scegliere Importa ed EsportaImpostazioni dal menu Strumenti.Per ulteriori informazioni, vedere Personalizzazione delle impostazioni di sviluppo in Visual Studio.
Esempio
Sebbene l'oggetto UIHierarchy rappresenti il contenuto di quasi tutte le finestre degli strumenti che dispongono di una visualizzazione struttura ad albero come Esplora soluzioni, la finestra degli strumenti stessa è ancora un oggetto Window. La proprietà UIHierarchyItems restituisce la raccolta dei nodi di primo livello nella finestra degli strumenti specificata. In Esplora soluzioni esiste un solo nodo di primo livello che corrisponde alla soluzione. Di conseguenza, il nodo del progetto per questa finestra specifica si trova nella raccolta del nodo di primo livello, non nella raccolta UIHierarchyItems della finestra.
Tenendo presente quanto sopra riportato, sono disponibili due modi per accedere a un nodo specifico (UIHierarchyItem) in una visualizzazione struttura ad albero:
Utilizzando il metodo GetItem per fare riferimento direttamente al nodo desiderato tramite un criterio soluzione/progetto/elemento.
Utilizzando UIHierarchyItems.Item.UIHierarchyItems..., un criterio raccolta/elemento/raccolta.
Per passare all'interno dell'annidamento dei nodi, continuare ad utilizzare questo criterio. Ad esempio, per accedere a un nodo subordinato del nodo di primo livello, è possibile utilizzare UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).
Di seguito vengono riportati alcuni esempi di come utilizzare entrambe le tecniche per accedere a un nodo di livello inferiore.
Questi esempi di componenti aggiuntivi illustrano come fare riferimento ai diversi membri del modello di automazione UIHierarchy per elencare tutti gli elementi in Esplora soluzioni.
Nel primo esempio viene utilizzata la strategia del metodo GetItem per accedere al contenuto del nodo Riferimenti in Esplora soluzioni. Per ulteriori informazioni su come eseguire il codice del componente aggiuntivo, vedere Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione.
Nota
L'esempio per Esplora soluzioni invia i dati ad una finestra di messaggio.
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());
}
Nell'esempio riportato di seguito viene illustrato come utilizzare l'oggetto UIHierarchy per elencare il contenuto della visualizzazione strutturata ad albero della finestra Esplora soluzioni.
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
Vedere anche
Attività
Procedura: controllare Esplora soluzioni
Procedura: modificare le caratteristiche delle finestre
Concetti
Grafico del modello a oggetti di automazione
Altre risorse
Creazione e controllo delle finestre di ambiente