Powershell 无法找到类型 [System.Windows.Forms.KeyEventHandler]
Powershell unable to find type [System.Windows.Forms.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:\Scripts\GUI-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]
确保在脚本顶部加载以下程序集:
[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
}
})
这可能是一个非常简单的问题,但我完全迷路了,寻找答案也没有帮助。
我有一些 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:\Scripts\GUI-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]
确保在脚本顶部加载以下程序集:
[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
}
})