Aracılığıyla paylaş


Nasıl yapılır: UIHierarchy kullanarak ağaç görünümleri değiştirme

Bazı aracı windows Visual Studio, aþaðýdaki gibi Çözüm Gezgini, bunların içeriğini değiştirmek için kullanabileceğiniz açık Otomasyon nesneleri yok. Bu araç pencereleri ancak sahip bir ağaç görünümü — diğer bir deyişle, bir hiyerarşik anahat stili, düğüm görünümü —, program aracılığıyla erişebilirsiniz. UIHierarchy Nesnesi bu araç pencereleri ağaç görünümlerinde temsil eder ve düğümlerini içeriğini görüntülemek ve bunlar üzerinde yineleme sağlar.

Nesne adı

Tanımlama

UIHierarchyNesne

Belirtilen araç penceresi ağaç görünümünde temsil eder.

UIHierarchyItemskoleksiyonu

Tüm düğümlerin ağaç görünümünde temsil eder.

UIHierarchyItemNesne

Ağaç görünümünde bir düğümü temsil eder.

Bu nesne ve koleksiyonların kullanarak şunları yapabilirsiniz:

  • (Tek veya çarpın) seçin ve ağaç görünümünde düğümleri 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ür veya bu varsayılan eylemi gerçekleştirin.

ToolWindows Nesne (hangi ayrıca döndürülen dan ToolWindows) çeşitli araç pencerelerinde rahatlık verir Visual Studio. _ Kullanmak yerine,applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput), artık kullanabilirsiniz _applicationObject.ToolWindows.OutputWindow.

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 geliştirilmiştir.Ayarlarınızı değiştirmek için Al ve Verayarları üzerinde araçları menü. Daha fazla bilgi için bkz. Visual Studio ayarları.

Örnek

Rağmen UIHierarchy nesnesini gösteren bir ağaç görünümü gibi olan neredeyse herhangi bir araç penceresinin içeriğini Çözüm Gezgini, araç penceresi ise hala bir Window nesne. UIHierarchyItems Özelliği belirtilen aracı penceresinde en üst seviyedeki düğümler koleksiyonu döndürür. İçinde Çözüm Gezgini, yalnızca tek bir üst düzey düğüm (Çözüm) yoktur. Sonuç olarak, bu pencere proje düğümünü koleksiyonunda en üst düzey düğümün yerine pencerenin olan UIHierarchyItems koleksiyonu.

Bunu aklınızda pul, belirli bir düğümü'ne erişmek için iki yol vardır (UIHierarchyItem) ağaç görünümünde:

  • Kullanarak GetItem yöntemini doğrudan bir çözüm/proje/madde düzeni kullanmak istediğiniz düğüme başvuracak.

  • Kullanarak UIHierarchyItems.Item.UIHierarchyItems... (madde/koleksiyon/koleksiyon desen).

    Düğüm iç içe geçme içine daha derin gitmek için yalnızca bu desen kullanmaya devam. Örneğin, en üst düzey düğüm alt düğüm gitmek için kullanacağınız UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).

Alt düzey düğümü'ne erişmek için iki teknik nasıl örnekleri aşağıdaki örneklerde gösterilmiştir.

Bu örnekler gösterir nasıl çeşitli üyeleri, başvuru ve eklenti UIHierarchy tüm öğeleri listelemek için otomasyon modeli Çözüm Gezgini.

İlk örnek kullanan GetItem başvurular düğümünde içeriğine erişme yöntemi stratejisini Çözüm Gezgini. Eklenti kodu çalıştırma hakkında daha fazla bilgi için bkz: Nasıl yapılır: derlemek ve Otomasyon nesne modeli kod örneklerini çalıştırmak.

Not

Örneğin Çözüm Gezgini bir ileti kutusu verilerini gönderir.

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, nasıl kullanılacağını gösterir UIHierarchy ağaç görünümü içeriğini listelemek için Çözüm Gezgini pencere.

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: Solution Explorer'da Denetim

Nasıl yapılır: pencere özelliklerini değiştirme

Kavramlar

Otomasyon nesne modeli şeması

Diğer Kaynaklar

Oluşturma ve ortam Windows denetleme

Eklentiler ve sihirbazlar oluşturma

Otomasyon ve Genişletilebilirlik Başvurusu