Private Sub SearchEmail()
UpdateStatusMessage("Searching Inbox for 'Silverlight'...")
' The following code demonstrates three ways to handle Automation
' events. In Visual Basic, all three ways use the AutomationEvent class.
searchEvent =
AutomationFactory.GetEvent(outlook, "AdvancedSearchComplete")
' The first way is demonstrated by the Handles clause of the
' SearchEvent_EventRaised method, which requires the WithEvents modifier
' on the searchEvent variable declaration.
' The second way uses the AddHandler syntax with the EventRaised event,
' and does not require the WithEvents modifier.
' AddHandler searchEvent.EventRaised, AddressOf SearchEvent_EventRaised
' The third way uses the AutomationEvent.AddEventHandler method, and
' requires the use of a delegate with an API signature that matches the
' Automation event.
' searchEvent.AddEventHandler(
' New AdvancedSearchCompleteDelegate(AddressOf SearchComplete))
' Begin the search.
outlook.AdvancedSearch("Inbox",
"urn:schemas:mailheader:subject ci_phrasematch 'Silverlight'",
True, "SubjectSearch")
End Sub
Private WithEvents searchEvent As AutomationEvent
Sub SearchEvent_EventRaised(ByVal sender As Object,
ByVal e As AutomationEventArgs) Handles searchEvent.EventRaised
SearchComplete(e.Arguments(0))
End Sub
' Required only with the second two ways of handling Automation events.
' Private Delegate Sub AdvancedSearchCompleteDelegate(ByRef search As Object)
' Note: Visual Basic does not support the use of custom delegates for
' events with optional parameters.
Private Sub SearchComplete(ByRef search As Object)
Dim searchResults As New List(Of String)
For Each result As Object In search.Results
searchResults.Add(result.Subject)
Next
SetResultsList(searchResults)
End Sub