Jak: zpracování událostí automatizace (Visual Basic)
Následující postup ukazuje, jak zpracovat události související se okno pomocí Visual Studio doplněk.
[!POZNÁMKA]
Dialogová okna a příkazy v nabídkách menu, které vidíte, se mohou lišit od těch popsaných v nápovědě, v závislosti na vašich aktivních nastaveních nebo edici.Tyto postupy byly vyvinuty s aktivní Obecné nastavení pro vývoj.Chcete-li změnit nastavení, zvolte Import and Export Settings v menu Nástroje.Další informace naleznete v tématu Nastavení aplikace Visual Studio.
Zpracování událostí okna pomocí jazyka Visual Basic
Vytvoření Visual Studio projektu přidat pomocí Visual Basic.
Ve třídě připojit inicializovat proměnné pro zpracování WindowEvents objektu a jiné proměnné pro uložení OutputWindowPane objektu.
Public WithEvents winEvents As EnvDTE.WindowEvents Private outputWinPane As OutputWindowPane
V tomto příkladu je proměnná s názvem winEvents.Ostatní objekty automatizace modelu se týkají jiných typů událostí.Například FindEvents se vztahuje na události související s operací, najít a TaskListEvents se vztahuje na události související s Seznam úkolů.Úplný seznam dostupných událostí, viz Reakce na události automatizace.
V OnConnection metody je proměnná zachytit události initialize.V následujícím příkladu je tato proměnná s názvem události.
Dim events As EnvDTE.Events events = _applicationObject.Events
Načtení objektů událostí z automatizace modelu.
winEvents = CType(events.WindowEvents(Nothing), EnvDTE.WindowEvents)
Visual StudioMetoda zpracování automaticky připojí, protože používá deklaraci proměnné objektu WithEvents (Visual Basic) popisovač.
Přidáte postupy pro každé události týkající se objektu události.Například chcete-li zpracovávat události, která nastane při zavření okna použijete:
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
U WindowEvents objekt musí mít postupy pro WindowActivated, WindowClosing, WindowCreated, a WindowMoved.V následujícím příkladu je uveden úplný kód.
Konečně aby Visual Studio od zpomalení systému nadále sledovat události související se okno po ukončení v, zakázat zpracování událostí.V Visual Basic, to se provádí nastavením obslužné rutiny události na Nothing.
Public Sub OnDisconnection(ByVal disconnectMode As _ ext_DisconnectMode, ByRef custom As Array) Implements _ IDTExtensibility2.OnDisconnection winEvents = Nothing End Sub
Vypne se zpracování událostí doplněk vypnut nebo doplněk při běhu IDE vypnut.Při vypnutí IDE všechny spuštěné doplňky automaticky ukončeny první.
Příklad
Následující příklad je základní Visual Studio , který ukazuje, jak zachytit a zpracovat okna událostí v Visual Studio.Při výskytu události týkající se okna, je odeslána oznámení Výstup okna.
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
Probíhá kompilace kódu
Tento kód kompilace, vytvořit nový Visual Studio přidat projekt v Visual Basic a nahraďte kód třídy připojit kód v příkladu.Informace o spuštění doplňku Postup: ovládání doplňky pomocí Správce doplňků.
Viz také
Úkoly
Jak: zpracování událostí automatizace (Visual C#)