如何在If语句中组合多个变量?

时间:2016-08-19 13:53:09

标签: powershell

所以我在PowerShell中处理一个简单的用户界面。非常类似于这篇文章: Powershell - How to invoke a checkbox windows with multiple choice

问题是,我有更多的选择可供选择,而不仅仅是3.例如,假设我有10个。这是我当前的问题代码:

注意第43-68行。

https://gist.github.com/preciselyprecise/89a202f928b2e70ea925439f61db9e56

我想在第29-42行做类似于注释的代码块。问题是我不确定如何将FOR循环中的变量$ i与$ checkBox#变量组合。我看到的另一个可能的选择是,我可以组合一个字符串“checkBox”并简单地将$ i连接到结尾;问题是我不知道如何使FOR循环将该解决方案解释为一个条件而不是一个字符串。

非常感谢任何帮助!请记住,我是PowerShell和StackOverflow的新手,所以如果我违反规则或做错了什么,请说出来:)。

1 个答案:

答案 0 :(得分:1)

我还没有对此进行过测试,但如果您取出$s变量,看起来您所评论的代码就会起作用。

for ($i=0; $i -le 11; $i++) {
    $v = Get-Variable -Name "checkBox$i" -valueonly
    if ($v.Checked) {
        $listBox1.Items.add("Checkbox $i is checked")
    }
    else {
        echo Question
    }
}

但是,我可能建议将复选框存储在数组而不是编号变量中。像这样:

#make the array
$checkboxes = @()
1..11 | % { 
  $checkboxes += New-Object System.Windows.Forms.CheckBox
  $checkboxes.Name = "CheckBox$_"
}

#and then get the values
foreach($checkbox in $checkboxes)
{
  if($checkbox.Checked)
  {
    $listBox1.Items.add("$($checkbox.Name) is checked")
  }
}