3

我正在学习 Powershell 并尝试创建一个类似于此处示例的 GUI 界面。

但是,当我按原样运行它时,$x从未定义过。知道我做错了什么吗?我知道这与以下内容有关:

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

因为如果我将其更改为:

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

它确实返回worked

4

2 回答 2

9

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

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

有关 Technet范围的更多信息- about_Scopes(或Get-Help about_scopes在 PowerShell 中编写)

于 2013-02-06T22:59:47.763 回答
0

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

于 2019-09-17T17:53:12.060 回答