我有一个基于图形用户界面的表单上有一系列的字段,并希望更新相应的标签,当文本输入到一个字段。我已经能够使用下面的代码让它工作
$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
变量是从数组中生成的,由于创建的变量数量可能不同,因此希望自动执行这一部分。
发布于 2017-07-05 10:52:37
将textbox元素收集到数组中,而不是使用单个变量,因此可以使用for
循环遍历这些元素。由于您希望在scriptblock中使用相应的变量,因此可能需要生成该scriptblock。试试这个:
for ($i=0; $i -lt $objTextBoxRD.Count; $i++) {
$sb = [scriptblock]::Create("`$objLabelLU$($i+1).Text = Get-Date")
$objTextBoxRD[$i].Add_Keyup($sb)
}
https://stackoverflow.com/questions/44923955
复制相似问题