遍历多个 GUI 元素

Iterating over several GUI elements

我有一个基于 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 变量已从数组生成,并且希望自动执行此部分,因为创建的变量数量可能会有所不同。

将文本框元素收集到一个数组中,而不是使用单个变量,这样您就可以使用 for 循环遍历它们。不过,由于您想在脚本块中使用相应的变量,因此您可能需要生成该脚本块。试试这个:

for ($i=0; $i -lt $objTextBoxRD.Count; $i++) {
    $sb = [scriptblock]::Create("`$objLabelLU$($i+1).Text = Get-Date")
    $objTextBoxRD[$i].Add_Keyup($sb)
}