I have a question regarding event handlers (Register-ObjectEvent). Here's my code:
Import-Module "$PSScriptRoot\Lib\Ookii.Dialogs.Winforms.dll"
$OKButton = [Ookii.Dialogs.WinForms.TaskDialogButton]("Ok")
$NOButton = [Ookii.Dialogs.WinForms.TaskDialogButton]("No")
$CancelButton = [Ookii.Dialogs.WinForms.TaskDialogButton]("Cancel")
$HelpButton = [Ookii.Dialogs.WinForms.TaskDialogButton]("Help")
$OokieTaskDialog = New-Object Ookii.Dialogs.WinForms.TaskDialog
$OokieTaskDialog.Buttons.Add($OKButton)
$OokieTaskDialog.Buttons.Add($NOButton)
$OokieTaskDialog.Buttons.Add($CancelButton)
$OokieTaskDialog.Buttons.Add($HelpButton)
$OokieTaskDialog.MainInstruction = "Main Instruction"
$OokieTaskDialog.Content = "Eiusmod cupidatat amet officia ut cillum anim proident. Aliqua aliqua ullamco reprehenderit velit est eiusmod et aute."
$OokieTaskDialog.ExpandedInformation = "Wozarlov, Marvin Houston, (870) 487-7980"
$OokieTaskDialog.Footer = "This is the footer text <a href=`"https://www.google.com`">More Info</a>"
$OokieTaskDialog.FooterIcon = [Ookii.Dialogs.WinForms.TaskDialogIcon]::Information
$OokieTaskDialog.EnableHyperlinks = $true
Register-ObjectEvent -InputObject $OokieTaskDialog -EventName HyperlinkClicked -Action { Write-Host "Link Clicked" }
$OokieTaskDialog.WindowTitle = "Window Title"
$OokieTaskDialog.Width = 300
$OokieTaskDialog.AllowDialogCancellation = $true
$OokieTaskDialog.MainIcon = [Ookii.Dialogs.WinForms.TaskDialogIcon]::Warning
$Result = $OokieTaskDialog.ShowDialog((New-Object System.Windows.Forms.Form -Property @{TopMost = $true}))
$Result
Specifically: Register-ObjectEvent -InputObject $OokieTaskDialog -EventName HyperlinkClicked -Action { Write-Host "Link Clicked" }
The event handler works, but it only displays the results ("Link Clicked") AFTER the dialog has closed. How do I get an event handler to respond immediately when the trigger conditions have been met?
For instance, if I click the hyperlink in the footer 10 times, and then click the OK button, the console prints "Link Clicked" 10 times.
I want to print "Link Clicked" immediately when the hyperlink is clicked.
How can I register an event that fires immediately? What am I doing wrong?