Powershell не удалось найти тип [System.Окна.Формы.KeyEventHandler]

это может быть довольно простой вопрос, но я полностью потерян, и поиск ответа не был полезен.

у меня есть код powershell для отображения простого GUI с текстовыми полями. Некоторые из текстовых полей позволяют пользователю нажать Enter для запуска кода Button_Click. Когда я пытаюсь запустить скрипт PS1, я получаю ошибки, говорящие следующее:

Unable to find type [System.Windows.Forms.KeyEventHandler].
Make sure that the assembly that contains this type is loaded.At C:ScriptsGUI-Testing.ps1:161 char:1

$TestVar=[System.Windows.Forms.KeyEventHandler]
CategoryInfo          : InvalidOperation: (System.Windows.Forms.KeyEventHandler:TypeName)
FullyQualifiedErrorId : TypeNotFound

странная часть, если я закрою GUI, а затем повторно запустите скрипт, я не получу Unable to find type ошибка и нажатие Enter работает по желанию.

думая, что у меня есть ответ, я попытался использовать [void][reflection.assembly]::Load('System.Windows.Forms.KeyEventHandler') которые дают эту ошибку Exception calling "Load" with "1" argument(s): "Could not load file or assembly 'System.Windows.Forms.KeyEventHandler' or one of its dependencies. [FileNotFoundException]

1 ответов


убедитесь, что вы загружаете следующие сборки в верхней части скрипта:

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 

если он все еще не работает, вы можете сделать что-то вроде:

$objForm.KeyPreview = $True
$objForm.Add_KeyDown({
    if ($_.KeyCode -eq "Enter") 
    {    
        #Write Code Here
    }
})