迭代几个GUI元素

时间:2017-07-05 10:40:15

标签: powershell for-loop foreach repeat

我有一个基于GUI的表单,上面有一系列字段,并希望在将文本输入到一个字段时更新相应的标签。我已经能够使用以下代码使其工作

$objTextBoxRD1.add_keyup({$objLabelLU1.Text = Get-Date})
$objTextBoxRD2.add_keyup({$objLabelLU2.Text = Get-Date})
$objTextBoxRD3.add_keyup({$objLabelLU3.Text = Get-Date})
$objTextBoxRD4.add_keyup({$objLabelLU4.Text = Get-Date})

是否有更优雅的方法可以达到相同的效果?

我尝试了以下操作,但当我在任何$objTextBoxRD字段中输入文字时,它只会更新$objLabelU4

$Count = 1
foreach ($User in $ISDept) {
    $objTextBoxRD = Get-Variable -Name ('objTextBoxRD' + ([string]$Count)) | Select -Expand Value
    $objLabelLU = Get-Variable -Name ('objLabelLU' + ([string]$Count)) | Select -Expand Value

    $objTextBoxRD.add_keyup({$objLabelLU.Text = Get-Date})
    $Count++
}

$objTextBoxRD$objLabelLU变量是从数组生成的,并且希望自动化此部分,因为创建的变量数量可能会有所不同。

1 个答案:

答案 0 :(得分:1)

在数组中收集文本框元素而不是使用单个变量,因此您可以使用for ($i=0; $i -lt $objTextBoxRD.Count; $i++) { $sb = [scriptblock]::Create("`$objLabelLU$($i+1).Text = Get-Date") $objTextBoxRD[$i].Add_Keyup($sb) } 循环对它们进行迭代。但是,由于您希望在脚本块中使用相应的变量,因此可能需要生成该脚本块。试试这个:

{{1}}