Procedura: creare un gestore eventi in una macro per un tipo di progetto specifico
Aggiornamento: novembre 2007
Il modello EnvironmentEvents, incluso in ogni progetto macro, contiene alcuni gestori eventi predichiarati. È possibile implementare questi gestori eventi per rispondere ad alcuni eventi di ambiente, ad esempio la chiusura di una finestra e così via. Dopo che è stata fornita l'implementazione, questi gestori eventi di extensibility generale intercetteranno automaticamente un evento specifico ogni volta che si verificherà nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio. Per ulteriori informazioni, vedere Procedura: gestire gli eventi dell'ambiente nelle macro.
È inoltre possibile aggiungere gestori eventi dell'IDE al modello EnvironmentEvents. Si dichiara una variabile di evento, si fornisce il codice del gestore eventi per la variabile e si aggiungono i gestori OnMacrosRuntimeReset e OnStartupComplete per automatizzare l'intercettazione degli eventi nell'IDE di Visual Studio.
Nell'esempio viene aggiunto un gestore eventi ReferencesEvents che viene generato quando si aggiunge un riferimento a un progetto Visual C#, Visual Basic o Visual J#.
Nota: |
---|
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida in linea a seconda delle impostazioni attive o dell'edizione del programma. Queste routine sono state sviluppate con le Impostazioni generali per lo sviluppo attive. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Impostazioni di Visual Studio. |
Per aggiungere un gestore eventi VSLangProj alla macro
Nell'IDE macro scegliere Aggiungi riferimento dal menu Progetto.
Nella finestra di dialogo Aggiungi riferimento selezionare VSLangProj, scegliere Aggiungi e quindi OK.
Nel riquadro Visualizzazione classi dell'IDE macro espandere MyMacros e fare doppio clic su EnvironmentEvents per visualizzarlo nel riquadro dell'editor macro.
Nella parte superiore del modulo EnvironmentEvents aggiungere:
Imports VSLangProj
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 refEvents As VSLangProj.ReferencesEvents
Tramite questa dichiarazione si aggiunge l'oggetto ReferencesEvents e relativi metodi alle caselle di riepilogo a discesa Nome classe e Nome metodo nell'editor di codice dell'IDE macro.
Utilizzare la casella di riepilogo a discesa Nome classe per selezionare l'oggetto DTEEvents e la casella di riepilogo a discesa Nome metodo per selezionare OnMacrosRuntimeReset e OnStartupComplete.
In questo modo vengono creati gestori per questi due eventi. Questi gestori eventi sono necessari affinché il gestore ReferencesEvents intercetti automaticamente gli eventi ogni volta che si verificano nell'IDE di Visual Studio.
Modificare i gestori eventi aggiungendo il cast EnvironmentEvents.refEvents, come illustrato di seguito. Per intercettare un evento quando viene aggiunto un riferimento a un progetto Visual Basic o Visual J#, sostituire la stringa CSharpReferencesEvents, rispettivamente con VBReferencesEvents o VJSharpReferencesEvents.
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_ DTEEvents.OnMacrosRuntimeReset EnvironmentEvents.refEvents_ =CType(DTE.Events.GetObject("CSharpReferencesEvents")_ , ReferencesEvents) End Sub
e
Private Sub DTEEvents_OnStartupComplete() Handles_ DTEEvents.OnStartupComplete EnvironmentEvents.refEvents_ = CType(DTE.Events.GetObject("CSharpReferencesEvents")_ , ReferencesEvents) End Sub
Infine, incollare il codice riportato di seguito nel modulo EnvironmentEvents oppure selezionare refEvents dalla casella di riepilogo a discesa Nome classe e ReferenceAdded dalla casella di riepilogo a discesa Nome metodo per creare un gestore eventi. Aggiungere la riga MsgBox(pReference.Name & " was added to the project.") al gestore eventi, come illustrato di seguito.
Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded MsgBox(pReference.Name & " was added to the project.") End Sub
Per testare il gestore eventi, creare un nuovo progetto Visual C# di qualsiasi genere.
Verrà visualizzata una finestra di messaggio per ogni riferimento aggiunto automaticamente al modello del progetto.
Esempio
Il codice rappresenta l'esempio completo. È possibile incollare il codice riportato di seguito nel modulo EnvironmentEvents del progetto macro.
Nota: |
---|
Dopo che è stato aggiunto, il gestore eventi viene generato ogni volta che viene aggiunto un riferimento al tipo di progetto specificato. Se non si desidera essere notificati ogni volta che viene aggiunto un riferimento, impostare il codice come commento. |
<System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
DTEEvents.OnMacrosRuntimeReset
EnvironmentEvents.refEvents= _ CType(DTE.Events.GetObject("CSharpReferencesEvents")_ , VSLangProj.ReferencesEvents)
End Sub
Private Sub DTEEvents_OnStartupComplete() Handles_
DTEEvents.OnStartupComplete
EnvironmentEvents.refEvents = _ CType(DTE.Events.GetObject("CSharpReferencesEvents")_ , VSLangProj.ReferencesEvents)
End Sub
Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
MsgBox(pReference.Name & " was added to the project.")
End Sub
Vedere anche
Attività
Procedura: gestire gli eventi in una macro
Procedura: gestire gli eventi di automazione (Visual Basic)
Procedura: gestire gli eventi di automazione (Visual C#)