Как получить доступ к источнику события графического интерфейса в PowerShell? - PullRequest
2 голосов
/ 26 декабря 2010

Я создаю меню проверяемых элементов в скрипте PowerShell, например:

"Red", "Green", "Blue" | %{
    $mi = new-object System.Windows.Forms.ToolStripMenuItem($_)
    $mi.CheckOnClick = $true
    $mi.add_CheckedChanged({
        $name = # label of the menu item that was checked
        doStuff $name
    })
    ...
}

Как получить доступ к пункту меню, который был проверен из обработчика событий CheckedChanged?

Ответы [ 2 ]

2 голосов
/ 26 декабря 2010

Поскольку метка ToolStripMenuItem хранится в его свойстве Text, а поскольку в обработчике событий PowerShell $ она привязана к отправителю события, метка элемента меню доступно в обработчике событий как:

$this.Text
0 голосов
/ 26 декабря 2010

В PowerShell 2.0 вы будете использовать автоматическую переменную $Sender в блоке сценариев Action, передаваемом в команду регистрации события, например Register-ObjectEvent например ::1004*

PS> Add-Type -AssemblyName System.Windows.Forms
PS> $form = new-object system.windows.forms.form
PS> $button = new-object system.windows.forms.button -prop @{Text = "Click me"}
PS> $job = Register-ObjectEvent $button Click -Action `
           {"Button with text: $($Sender.Text) clicked."}
PS> $form.Controls.Add($button)
PS> $form.ShowDialog()
Cancel
PS> Receive-Job $job
Button with text: Click me clicked.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...