получение ссылки на функцию powershell по строке в виде блока - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь добавить обработчик к кнопке формы / wpf с помощью Add_Click.Я не знаю имени функции заранее, поэтому важно создать имя функции.Затем, передав его в Add_Click.

Пытаясь сделать следующее, я получаю

$num = 1
function somefn1 () {}

$fn = $Function:"somefn$num"

$somebutton.Add_Click($fn)

Ошибка:

Cannot convert argument "value", with value: "somefn1", for "add_Click" to type "System.Windows.RoutedEventHandler": "Cannot convert the 
"somefn1" value of type "System.String" to type "System.Windows.RoutedEventHandler"."
At xyz
+ ... $somebutton.Add_Click("somefn$num") }
+                              ~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

Я не уверен, как обойти это.Есть идеи или советы?

1 Ответ

0 голосов
/ 17 мая 2019

Работа: использование строки для присоединения существующей функции (обратите внимание на область действия обработчика)

$elName = "theButton"  # => Name="theButton"
$fnName = "mynamespace." + "function_name"

$fns = Get-ChildItem function: | Where-Object { $_.Name -like $fnName }
$Form.FindName($elName).Add_Click( $fns[0].ScriptBlock )

function mynamespace.function_name($Sender, $EventArgs) {
  Write-Host "works !"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...