以GUI形式动态添加和删除内容

时间:2016-01-31 15:45:46

标签: arrays wpf winforms powershell

我正在尝试在PowerShell中创建一个包含动态内容的GUI窗口。我需要:

  • 创建一个随机计数按钮(或其他可点击项目)的窗口
  • 单击按钮后
  • ,将从窗口中删除相关文本标签

重要提示:我无法使用列表或数据网格。

我有以下代码,但它仍然只返回最后一项值。

Invoke-Expression

我也尝试了Invoke-Expression -Command "`$thisButton.Add_Click({`$x=`"$($item)`";`write-host $x})" ,但它没有返回预期结果:

myMum

或者更好的想法如何获取按钮被点击的详细信息,因为按钮的数量是随机的?

1 个答案:

答案 0 :(得分:0)

问题是add_Click()内的脚本块现在包含对$thisbutton的引用,它在运行时将被foreach循环中的最后一个值替换 - 这是预期的行为。

你可以在这里做两件事之一。

1。捕获闭包中的$thisButton.Text(或$item)值:

# Piping to Out-Null has zero effect here, just remove it 
$thisButton.Add_Click({Write-Host $thisButton.Text}.GetNewClosure())

2。使用事件参数来确定在运行时单击了哪个按钮:

$thisButton.Add_Click({param($Sender,$EventArgs) Write-Host $Sender.Text})