Nasıl yapılır: UIHierarchy Kullanarak Ağaç Görünümlerini İşleme
Visual Studio eklentileri, Visual Studio 2013'te kullanım dışıdır.Eklentilerinizi VSPackage uzantılarına yükseltmelisiniz.Yükseltme hakkında daha fazla bilgi için bkz: SSS: Eklentileri VSPackage Uzantılarına Dönüştürme.
içindeki Çözüm Gezgini gibi bazı araç pencerelerinin, bunların içeriğini yönetmek için kullanabileceğiniz açık otomasyon nesneleri yoktur.Ancak bu araç pencereleri, program aracılığıyla erişebileceğiniz bir ağaç görünümüne — diğer bir deyişle, bir hiyerarşik anahat stili, düğüm görünümü — sahiptir.UIHierarchy nesnesi, bu araç pencerelerinde ağaç görünümlerini belirtir ve bunlar içerisinde yineleme yapmanızı ve düğümlerinin içeriğini görüntülemenizi sağlar.
Nesne Adı |
Tanımlama |
---|---|
UIHierarchy nesnesi |
Belirtilen araç penceresindeki ağaç görünümünü temsil eder. |
UIHierarchyItems koleksiyonu |
Ağaç görünümündeki tüm düğümleri temsil eder. |
UIHierarchyItem nesnesi |
Ağaç görünümündeki tek bir düğümü temsil eder. |
Bu nesneleri ve koleksiyonları kullanarak, şunları yapabilirsiniz:
Düğümleri (tek veya çok olarak) seçin ve ağaç görünümünde görüntüleyin.
Ekleme noktasını ağaç görünümünde yukarı veya aşağı taşıyın.
Seçili öğenin değerini döndür veya öğeye varsayılan eylemini yaptır.
ToolWindows nesnesi (ayrıca ToolWindows'dan getirilen), Visual Studio'de çeşitli araç pencerelerine daha kolay başvurulmasını sağlar.Örneğin, _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) kullanmak yerine _applicationObject.ToolWindows.OutputWindow kullanabilirsiniz.
[!NOT]
Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir.Bu yordamlar, Genel Geliştirme Ayarları etkin şekilde geliştirildi.Ayarlarınızı değiştirmek için Araçlar menüsünden Ayarlarİçeri Aktar ve Dışarı Aktar'ı seçin.Daha fazla bilgi için bkz. Visual Studio'da Geliştirme Ayarlarını özelleştirme.
Örnek
UIHierarchy nesnesi, Çözüm Gezgini gibi ağaç görünümüne sahip yaklaşık her araç penceresinin içeriğini temsil etse de, araç penceresi hala bir Window nesnesidir.UIHierarchyItems özelliği belirtilen araç penceresi içerisinde en üst düzey düğümlerin koleksiyonunu geri döndürür.Çözüm Gezgini'nde, yalnızca tek bir üst düzey düğüm (çözüm) vardır.Sonuç olarak, bu belirli pencereye ilişkin proje düğümü, pencerenin UIHierarchyItems koleksiyonu yerine en üst düzey düğümün koleksiyonundadır.
Ağaç görünümünden belirli bir düğüme (UIHierarchyItem) erişimin iki yolu olduğunu aklınızda bulundurun:
Bir çözüm/proje/öğe düzeni kullanarak istenen düğüme doğrudan başvurmak için GetItem yöntemini kullanarak.
UIHierarchyItems.Item.UIHierarchyItems... öğesini (bir koleksiyon/öğe/koleksiyon düzeni).
Bir düğüm iç içe geçmesinin daha derinine gitmek için, sadece bu düzeni kullanmaya devam.Örneğin, bir düğüm altından üst düzey düğüme gitmek için UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2) kullanırsınız.
Bir alt düzey düğüme erişmek her iki tekniğin için nasıl kullanılacağına ilişkin örnekler aşağıdaki örnekte gösterilmiştir.
Bu eklenti örnekleri, UIHierarchy otomasyon modelinin çeşitli üyelerinin, hepsini Çözüm Gezgini'nde listelemek üzere nasıl kullanılacağını ve onlara nasıl başvurulacağını gösterir.
İlk örnek Çözüm Gezgini içerisindeki Referanslar düğümünün içeriklerine erişim için GetItem yöntem stratejisini kullanır.Eklenti kodunu çalıştırma hakkında daha fazla bilgi edinmek için bkz. Nasıl yapılır: Otomasyon Nesne Modeli Kod Örnekleri Derleme ve Çalıştırma.
[!NOT]
Çözüm Gezgini örneği, verilerini bir ileti kutusuna göndermektedir.
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());
}
Aşağıdaki örnek Çözüm Gezgini penceresinin ağaç görünümünün içeriklerini sıralamak üzere UIHierarchy'nin nasıl kullanılacağını göstermektedir.
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
Ayrıca bkz.
Görevler
Nasıl yapılır: Çözüm Gezginini Denetleme
Nasıl yapılır: Pencere Özelliklerini Değiştirme
Kavramlar
Otomasyon Nesne Modeli Grafiği
Diğer Kaynaklar
Ortam Pencereleri Oluşturma ve Denetleme