遍历多个 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)
}
我有一个基于 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)
}