Procedura: gestire gli eventi dell'ambiente nelle macro
In ogni nuovo progetto macro è incluso un modulo denominato EnvironmentEvents, visibile solo nell'IDE macro. Questo elemento modello contiene un'utile serie di routine eventi predefinite che è possibile implementare nelle macro. In particolare, in EnvironmentEvents sono incluse le routine seguenti:
È possibile visualizzare le routine evento nei visualizzatori oggetti nell'editor di codice.
Per inserire una routine eventi predefinita nella macro
Nel riquadro Visualizzazione classi dell'IDE macro fare doppio clic sul nodo EnvironmentEvents per visualizzarlo come una scheda EnvironmentEvents e un menu a discesa nel riquadro dell'editor delle macro.
Dal menu a discesa EnvironmentEvents selezionare un tipo di eventi, ad esempio TaskListEvents. La casella combinata Dichiarazioni viene popolata con gli eventi disponibili nell'Elenco attività.
Dal menu a discesa Dichiarazioni selezionare un evento, ad esempio TaskAdded, per aggiungere la relativa routine eventi al modulo.
L'evento viene inserito nella macro ed è possibile aggiungere il codice alla routine eventi.
Se lo si desidera, è possibile aggiungere altre routine eventi alla casella combinata Nome classe, ad esempio gli eventi CommandEvents.
Aggiunta di una nuova routine eventi
Per aggiungere una nuova routine eventi alla casella combinata Nome classe
Immettere una dichiarazione per l'evento dopo l'area nascosta del modulo EnvironmentEvents con l'etichetta "Automatically generated code, do not modify":
<System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents ' This procedure handles DTEEvents.OnMacrosRuntimeReset.
Impostare la routine OnMacrosRuntimeReset in modo che la nuova variabile di evento venga inizializzata ogni volta che la macro viene rieseguita:
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _ DTEEvents.OnMacrosRuntimeReset CommandEvents = DTE.Events.CommandEvents End Sub
Impostare la routine OnStartupComplete per completare la procedura di inizializzazione del passaggio 5.
Private Sub DTEEvents_OnStartupComplete() Handles_ DTEEvents.OnStartupComplete CommandEvents = DTE.Events.CommandEvents End Sub
Aggiungere il codice relativo alla risposta all'evento. In questo esempio, una volta eseguito il comando, la routine riporta i dettagli del comando emesso:
Public Sub CommandEvents_AfterExecute(ByVal Guid As String, ByVal ID As Integer, ByVal CustomIn As Object, ByVal CustomOut as Object) Handles CommandEvents.AfterExecute MsgBox(DTE.Commands.Item(Guid, ID).Name) End Sub
Quando si dichiara un nuovo evento, prima di poterlo utilizzare è necessario inizializzarlo. Per le macro, la nuova variabile di evento deve essere inizializzata nella routine eventi OnMacrosRuntimeReset.
L'evento si verifica ogni volta che il runtime della macro viene reimpostato, ad esempio quando la macro viene caricata o scaricata. In tali circostanze si verifica una perdita delle informazioni di stato globale, in altre parole i valori delle variabili globali vengono persi e i gestori eventi vengono dissociati. Il codice che in precedenza veniva avviato al verificarsi di un evento, quindi, non viene più eseguito.
Quando il runtime di una macro viene reimpostato, viene generato l'evento OnMacrosRuntimeReset. che consente di reinizializzare automaticamente le variabili e i gestori eventi. OnMacrosRuntimeReset assicura che i valori dei gestori eventi e delle variabili vengano reinizializzati ogni volta che il runtime della macro viene reimpostato e quindi assicura il corretto funzionamento delle nuove routine eventi.
Vedere anche
Attività
Procedura: fare riferimento a componenti COM e .NET Framework nelle macro
Concetti
Automazione di operazioni ripetitive tramite macro