Aracılığıyla paylaş


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

Eklentiler ve Sihirbazlar Oluşturma

Otomasyon ve Genişletilebilirlik Başvurusu