用户界面-带有GUI的Powershell不会设置变量



我正在学习Powershell,并试图创建一个GUI界面,就像这里的例子一样。

然而,当我按原样运行时,$x从未被定义。你知道我做错了什么吗?我知道这与有关

$OKButton.Add_Click({$x=$objListBox.SelectedItem;$objForm.Close()})

因为如果我把它改成:

$OKButton.Add_Click({Write-Host "worked";$objForm.Close()})

它确实返回worked

您的操作块在单独的本地作用域中运行。要修改全局(会话范围)变量,请使用作用域修饰符($global:varname)。例如:

$OKButton.Add_Click({$global:x=$objListBox.SelectedItem;$objForm.Close()})

有关Technet上作用域的更多信息-about_scopes(或在PowerShell中写入Get-Help about_scopes

也可以使用$Script:variable来代替$Global:variable,这将增加脚本中变量的范围。因此,如果您使用A函数创建按钮,并且在该函数中还具有.Add_Click({})函数,则它将在您的函数范围内工作。$Script:变量将变量的作用域增加到最近的父脚本文件作用域。

相关内容

  • 没有找到相关文章

最新更新