Aracılığıyla paylaş


Nasıl yapılır: (Visual Basic) belirli bir projede olaylara yanıt

Otomasyon modeli ortamı olaylara yanıt vermek için kullanılan nesneleri içeren Visual Studio tümleşik geliştirme ortamı (IDE). Tanımlanan ortam olayları VSLangProj ve VSLangProj80 özgü Visual C# ve Visual Basic projeleri. Örneğin, ImportsEvents bir alma işlemi için eklendiğinde veya kaldırılmasını yükseltilmiş bir Imports koleksiyonu.

Bu örnek Visual Basic eklenecek bir ReferencesEvents bir eklenti projesi için proje türü için belirli olay işleyicisi. ReferencesEventsbaşvuru değiştirilen, eklenen veya kaldırılmasını yükseltilmiş bir Visual C# veya Visual Basic proje.

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ı ile etkin geliştirilmiştir.Ayarlarınızı değiştirmek için Araçlar menüsünden İçeri ve Dışarı Aktarma Ayarları'nı seçin.Daha fazla bilgi için bkz. Visual Studio ayarları.

Visual Basic kullanarak başvuru ile ilgili olayları işlemek için

  1. Oluşturma bir Visual Studio eklenti projesi Visual Basic.

  2. Ekleme Imports VSLangProj Connect.vb dosyanın en üstüne.

  3. Üzerinde Proje menüsünde,'ı Add Reference,'ı .net sekmesinde, ilk seçin VSLangProj,'ı tıklatın ve Tamam.

  4. Connect sýnýfý içinde işlemek için bir değişkeni başlatmak ReferencesEvents nesnesi ve işlemek için başka bir OutputWindowPane.

    Public Class Connect
        Implements IDTExtensibility2
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
        ' Handle Reference events.
        Public WithEvents refEvents As VSLangProj.ReferencesEvents
        Private outputWinPane As OutputWindowPane
    

    Bu örnekte, değişken adlı refEvents.

    Diğer proje için belirli olay türleri için otomasyon modeli diğer nesnelerin ilgilidir. Örneğin, ImportsEvents bir alma işlemi için eklendiğinde veya kaldırılmasını yükseltilmiş bir Imports koleksiyonu. BuildManagerEventsYerleşik özel araçların çıkışları geçici derlemeler için ilgili olaylar için geçerlidir. Daha fazla bilgi için BuildManager nesne için bkz: BuildManager nesne giriş. Proje türleri için özel olaylar tam listesi için bkz: Olay nesneleri (proje türleri için özel). Genel Otomasyon olaylar listesi için bkz: Otomasyon olay nesneleri.

  5. De OnConnection yöntemi, bir değişkeni olayların ele alınması için başlatma. Bu örnekte, olayları değişken adı verilir.

        Dim events As EnvDTE80.Events2
        events = CType(_applicationObject.Events, Events2)
    
  6. De OnConnection yöntemini başlatmak bir OutputWindow değişkeni.

        Dim outputWindow As OutputWindow
        outputWindow = CType(_applicationObject.Windows.Item _
        (Constants.vsWindowKindOutput).Object, EnvDTE.OutputWindow)
        outputWinPane = outputWindow.OutputWindowPanes.Add_
        ("Reference Event Information ")
    
  7. Ayrıca, OnConnection yöntemi, olay nesnelerini Otomasyon modelinden almak.

    refEvents = CType(events.GetObject("CSharpReferencesEvents"),_
     ReferencesEvents)
    

    Visual StudioNesne değişken bildiriminde kullandığından yöntemi işleyicisi otomatik olarak bağlar WithEvents (Visual Basic) işleyicisi.

    Bu örnekte ReferencesEvents özgü Visual C# projeleri. İçin belirli olaylara yanıt vermek için Visual Basic olaylar, dize yerine CSharpReferencesEvents ile VBReferencesEvents. Dizeleri farklı türde projeler için belirli olaylar için kullanılacağını belirleme hakkında daha fazla bilgi için bkz: Olay nesneleri (proje türleri için özel).

  8. Her olay için olay nesnesi ilgili yordamlar ekleyin. Örneğin, bir başvuru eklendiğinde oluşan olayý iþlemek için kullanırsınız:

    Sub ReferenceAdded(ByVal addedRef As VSLangProj.Reference)_
        Handles refEvents.ReferenceAdded
        outputWinPane.OutputString_
        ("ReferencesEvents.ReferenceAdded" & ControlChars.Lf)
        outputWinPane.OutputString("The reference to " _
        & addedRef.Name & " was added." & ControlChars.Lf)
    End Sub
    

    Durumunda ReferencesEvents, olayları için tanımlanmış olmalıdır ReferenceAdded, ReferenceRemoved, ReferenceChanged, tam, aşağıdaki örnekte görüldüğü gibi.

  9. Son olarak, önlemek için Visual Studio sisteminizin eklenti kapattıktan sonra pencere ile ilgili olayları izlemek devam ederseniz yavaşlatmalarını, olay işleme devre. De Visual Basic, bu olay işleyicisi ayarlayarak yapılır Nothing.

    Public Sub OnDisconnection(ByVal RemoveMode As_
     Extensibility.ext_DisconnectMode, ByRef custom As System.Array)_
     Implements Extensibility.IDTExtensibility2.OnDisconnection
        refEvents = Nothing
    End Sub
    

    Eklenti çalışmayı sürdürürken eklenti ya da IDE kapatılır mı bu olay işleme devre dışı bırakır. Tüm çalışan eklentiler IDE kapatıldığında, ilk otomatik olarak bilgisayarı.

Örnek

Bir basic aşağıdaki örnekte olduğu Visual Studio yakalamak ve işlemek gösterilmiştir eklentisini Visual C# olayda başvuru Visual Studio. Başvuru olay oluştuğunda bir uyarı iletisi gönderilir Çıkış pencere.

Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj

Public Class Connect
    Implements IDTExtensibility2
    Dim _applicationObject As DTE2
    Dim _addInInstance As AddIn
    ' Handle Reference events.
    Public WithEvents refEvents As VSLangProj.ReferencesEvents
    Private outputWinPane As OutputWindowPane
Public Sub OnBeginShutdown(ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnBeginShutdown
End Sub

Public Sub OnAddInsUpdate(ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnAddInsUpdate
End Sub

Public Sub OnStartupComplete(ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnStartupComplete
End Sub

Public Sub OnDisconnection(ByVal RemoveMode As Extensibility.ext_DisconnectMode, ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnDisconnection
    ' Turns off reference event handling when the add-in shuts down.
    refEvents = Nothing
End Sub

Public Sub OnConnection(ByVal application As Object, _
 ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef _
 custom As System.Array) Implements _
 Extensibility.IDTExtensibility2.OnConnection

    _applicationObject = CType(application, EnvDTE80.DTE2)
    _addInInstance = CType(addInInst, EnvDTE.AddIn)

    Dim events As EnvDTE80.Events2
    events = CType(_applicationObject.Events, Events2)
    ' Send event messages to the Output window.
    Dim outputWindow As OutputWindow
    outputWindow = CType(_applicationObject.Windows.Item _
    (Constants.vsWindowKindOutput).Object, EnvDTE.OutputWindow)
    outputWinPane = outputWindow.OutputWindowPanes.Add _
    ("Reference Event Information ")

    ' Retrieve the event objects from the automation model.
    ' Visual Basic automatically connects the method handler since 
    ' the object variable declaration uses the 'WithEvents' handler.
    refEvents = CType(events.GetObject("CSharpReferencesEvents"), _
    ReferencesEvents)
End Sub
    ' Handle all of the various reference-related events.
    Sub ReferenceRemoved(ByVal removedRef As VSLangProj.Reference) _
    Handles refEvents.ReferenceRemoved
    outputWinPane.OutputString("ReferencesEvents.ReferenceRemoved" _
    & ControlChars.Lf)
    outputWinPane.OutputString("The reference to " & removedRef.Name _
    & " was removed." & ControlChars.Lf)
End Sub

Sub ReferenceChanged(ByVal changedRef As VSLangProj.Reference) _
    Handles refEvents.ReferenceChanged
    outputWinPane.OutputString("ReferencesEvents.ReferenceChanged" _
    & ControlChars.Lf)
    outputWinPane.OutputString("The reference to " & changedRef.Name _
    & " was changed." & ControlChars.Lf)
End Sub
Sub ReferenceAdded(ByVal addedRef As VSLangProj.Reference) _
    Handles refEvents.ReferenceAdded
    outputWinPane.OutputString("ReferencesEvents.ReferenceAdded" _
    & ControlChars.Lf)
    outputWinPane.OutputString("The reference to " & addedRef.Name _
    & " was added." & ControlChars.Lf)
End Sub

End Class

Kod Derleniyor

Bu kodu derlemeye yeni bir oluşturmak Visual Studio eklenti projesi Visual Basic ve örnek kodu ile bağlan sınıfının kodunu değiştirin. Bir eklenti çalıştırma hakkında daha fazla bilgi için bkz: Nasıl yapılır: denetim Eklenti Yöneticisi'ni kullanarak eklentileri.

Ayrıca bkz.

Görevler

Nasıl yapılır: (Visual C#) belirli bir projede olaylara yanıt

Başvuru

Bildirimi alır (.net ad ve tür)

Diğer Kaynaklar

Otomasyon olaylarını yanıtlama

(Visual Basic ve Visual C# Projects) olaylarını yanıtlama