Nasıl yapılır: (Visual Basic) Otomasyon olayları işlemek
Aşağıdaki yordamı kullanarak pencere ile ilgili olayları işlemek gösteren bir Visual Studio eklentisi.
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 pencere ile ilgili olayları işlemek için
Oluşturma bir Visual Studio kullanarak eklenti projesinin Visual Basic.
Connect sýnýfý içinde işlemek için bir değişkeni başlatmak WindowEvents nesnesi ve saklamak için başka bir değişken bir OutputWindowPane nesne.
Public WithEvents winEvents As EnvDTE.WindowEvents Private outputWinPane As OutputWindowPane
Bu örnekte, winEvents değişken adı verilir. Otomasyon modelindeki diğer nesneleri başka tür olaylar ilgilidir. Örneğin, FindEvents işlemleri bulmak için ilgili olaylar için geçerlidir ve TaskListEvents ilgili olayları uygulandığı Task List. Kullanılabilir olaylar tam listesi için bkz: Otomasyon olaylarını yanıtlama.
De OnConnection yöntemi, bir değişkeni olayların ele alınması için başlatma. Aşağıdaki örnekte, olaylar bu değişken adı verilir.
Dim events As EnvDTE.Events events = _applicationObject.Events
Olay nesneleri Otomasyon modelinden almak.
winEvents = CType(events.WindowEvents(Nothing), EnvDTE.WindowEvents)
Visual StudioNesne değişken bildiriminde kullandığından yöntemi işleyicisi otomatik olarak bağlar WithEvents (Visual Basic) işleyicisi.
Her olay için olay nesnesi ilgili yordamlar ekleyin. Örneğin, bir pencere kapatıldığında oluşan olayý iþlemek için kullanırsınız:
Private Sub windowsEvents_WindowClosing(ByVal Window As _ EnvDTE.Window) Handles winEvents.WindowClosing outputWinPane.OutputString("WindowEvents.WindowClosing" & _ ControlChars.Lf) outputWinPane.OutputString(ControlChars.Tab & "Window: " & _ Window.Caption & ControlChars.Lf) End Sub
Durumunda WindowEvents nesne için yordamları olmalıdır WindowActivated, WindowClosing, WindowCreated, ve WindowMoved. Aşağıdaki örnekte tam kodu listelenir.
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 dışı. De Visual Basic, bu olay işleyicisi ayarlayarak yapılır Nothing.
Public Sub OnDisconnection(ByVal disconnectMode As _ ext_DisconnectMode, ByRef custom As Array) Implements _ IDTExtensibility2.OnDisconnection winEvents = Nothing End Sub
Eklentiyi kapatmak ya da eklenti çalışmayı sürdürürken IDE kapatma olay işleme devre dışı bırakır. Tüm çalışan eklentiler IDE kapatıldığında, ilk otomatik olarak bilgisayarı.
Örnek
Aşağıdaki örnek bir temel olan Visual Studio müdahale ve pencere ile ilgili olayları işlemek gösterilmiştir eklentisini Visual Studio. Pencere ile ilgili olaylar meydana geldiinde uyarı iletisi gönderilir Çıkış pencere.
Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Public Class Connect
Implements IDTExtensibility2
' Handle window events.
Public WithEvents winEvents As EnvDTE.WindowEvents
Private outputWinPane As OutputWindowPane
Dim _applicationObject As DTE2
Dim _addInInstance As AddIn
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)
Dim events As EnvDTE.Events
events = _applicationObject.Events
' 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( _
"DTE Event Information")
' Retrieve the event objects from the automation model.
' Visual Basic automatically connects the method handler
' because the object variable declaration uses the 'WithEvents'
' handler.
winEvents = CType(events.WindowEvents(Nothing), _
EnvDTE.WindowEvents)
End Sub
' Handle all window-related events.
Private Sub windowsEvents_WindowActivated(ByVal GotFocus As _
EnvDTE.Window, ByVal LostFocus As EnvDTE.Window) Handles _
winEvents.WindowActivated
outputWinPane.OutputString("WindowEvents.WindowActivated" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab _
& "Window receiving focus: " & GotFocus.Caption _
& ControlChars.Lf)
outputWinPane.OutputString _
(ControlChars.Tab & "Window that lost focus: " _
& LostFocus.Caption & ControlChars.Lf)
End Sub
Private Sub windowsEvents_WindowClosing(ByVal Window As _
EnvDTE.Window) Handles winEvents.WindowClosing
outputWinPane.OutputString("WindowEvents.WindowClosing" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Window: " & _
Window.Caption & ControlChars.Lf)
End Sub
Private Sub windowsEvents_WindowCreated(ByVal Window As _
EnvDTE.Window) Handles winEvents.WindowCreated
outputWinPane.OutputString("WindowEvents.WindowCreated" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Window: " & _
Window.Caption & ControlChars.Lf)
End Sub
Private Sub windowsEvents_WindowMoved(ByVal Window As _
EnvDTE.Window, ByVal Top As Integer, ByVal Left As Integer, ByVal _
[Width] As Integer, ByVal Height As Integer) Handles _
winEvents.WindowMoved
outputWinPane.OutputString("WindowEvents.WindowMoved" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Window: " & _
Window.Caption & ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Location: (" & _
Top.ToString() & " , " & Left.ToString() & " , " & _
Width.ToString() & " , " & Height.ToString() & ")" & _
ControlChars.Lf)
End Sub
Public Sub OnDisconnection(ByVal disconnectMode As _
ext_DisconnectMode, ByRef custom As Array) Implements _
IDTExtensibility2.OnDisconnection
' Turns off window event handling when the add-in shuts down.
winEvents = Nothing
End Sub
Public Sub OnAddInsUpdate(ByRef custom As Array) Implements _
IDTExtensibility2.OnAddInsUpdate
End Sub
Public Sub OnStartupComplete(ByRef custom As Array) Implements _
IDTExtensibility2.OnStartupComplete
End Sub
Public Sub OnBeginShutdown(ByRef custom As Array) Implements _
IDTExtensibility2.OnBeginShutdown
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. 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: tanıtıcı Otomasyon olaylarýna (Visual C#)