我该如何优化这段代码?
How do I optimize this code?
我有一些带块的 powershell 脚本:
$checkBox_1.Add_CheckStateChanged({
if( $checkBox_1.Checked -or
$checkBox_2.Checked -or
$checkBox_3.Checked -or
$checkBox_4.Checked -or
$checkBox_5.Checked -or
$checkBox_6.Checked -or
$checkBox_7.Checked -or
$checkBox_8.Checked -or
$checkBox_9.Checked -or
$checkBox_10.Checked -or
$checkBox_11.Checked -or
$checkBox_12.Checked -or
$checkBox_13.Checked -or
$checkBox_14.Checked ) {
$okButton.Enabled = $True
}
else {
$okButton.Enabled = $False
}
})
$checkBox_2.Add_CheckStateChanged({
if( $checkBox_1.Checked -or
$checkBox_2.Checked -or
$checkBox_3.Checked -or
$checkBox_4.Checked -or
$checkBox_5.Checked -or
$checkBox_6.Checked -or
$checkBox_7.Checked -or
$checkBox_8.Checked -or
$checkBox_9.Checked -or
$checkBox_10.Checked -or
$checkBox_11.Checked -or
$checkBox_12.Checked -or
$checkBox_13.Checked -or
$checkBox_14.Checked ) {
$okButton.Enabled = $True
}
else {
$okButton.Enabled = $False
}
})
还有另外十二个类似的块。
写这个块的方式是否更短、更好?
只创建一个包含所有复选框的数组:
$checkboxes = Get-Variable checkBox_*
$checkboxes | ForEach {
$_.Value.Add_CheckStateChanged({
$okButton.Enabled = $True -in ($checkboxes | ForEach { $_.Value.Checked })
})
}
在PS3.0+中可以简化内部检查:
$okButton.Enabled = $True -in $checkboxes.Value.Checked
我有一些带块的 powershell 脚本:
$checkBox_1.Add_CheckStateChanged({
if( $checkBox_1.Checked -or
$checkBox_2.Checked -or
$checkBox_3.Checked -or
$checkBox_4.Checked -or
$checkBox_5.Checked -or
$checkBox_6.Checked -or
$checkBox_7.Checked -or
$checkBox_8.Checked -or
$checkBox_9.Checked -or
$checkBox_10.Checked -or
$checkBox_11.Checked -or
$checkBox_12.Checked -or
$checkBox_13.Checked -or
$checkBox_14.Checked ) {
$okButton.Enabled = $True
}
else {
$okButton.Enabled = $False
}
})
$checkBox_2.Add_CheckStateChanged({
if( $checkBox_1.Checked -or
$checkBox_2.Checked -or
$checkBox_3.Checked -or
$checkBox_4.Checked -or
$checkBox_5.Checked -or
$checkBox_6.Checked -or
$checkBox_7.Checked -or
$checkBox_8.Checked -or
$checkBox_9.Checked -or
$checkBox_10.Checked -or
$checkBox_11.Checked -or
$checkBox_12.Checked -or
$checkBox_13.Checked -or
$checkBox_14.Checked ) {
$okButton.Enabled = $True
}
else {
$okButton.Enabled = $False
}
})
还有另外十二个类似的块。
写这个块的方式是否更短、更好?
只创建一个包含所有复选框的数组:
$checkboxes = Get-Variable checkBox_*
$checkboxes | ForEach {
$_.Value.Add_CheckStateChanged({
$okButton.Enabled = $True -in ($checkboxes | ForEach { $_.Value.Checked })
})
}
在PS3.0+中可以简化内部检查:
$okButton.Enabled = $True -in $checkboxes.Value.Checked