2016-08-19 2 views
0

Итак, я работаю над простым пользовательским интерфейсом в PowerShell. Очень похож на этот пост: Powershell - How to invoke a checkbox windows with multiple choiceКак объединить несколько переменных в оператор If?

проблема, у меня есть много больше выбора, чтобы выбрать из, чем просто 3. Для примера предположим, что у меня есть 10. Это мой текущий код вопрос:

Примечание линии 43- 68.

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

Я хотел бы сделать что-то похожее на комментировал блок кода на линиях 29-42. Проблема в том, что я не уверен, как объединить переменную $ i в цикле FOR с переменной $ checkBox #. Другой возможный вариант, который я вижу, - это, может быть, я мог бы комбинировать строку «checkBox» и просто конкатенировать $ i до конца; проблема заключается в том, что я не знаю, как заставить цикл FOR интерпретировать это решение как одно условное, а не как строку.

Любая помощь с благодарностью! Пожалуйста, имейте в виду, что я новичок в powershell и StackOverflow, поэтому, если я нарушил правило или сделал что-то неправильно, пожалуйста, скажите так :).

+0

Просто хотел сказать, что это сложный способ сделать это, я думаю. Для дальнейшего использования более простой способ можно найти здесь: https://foxdeploy.com/resources/learning-gui-toolmaking-series/. Я думаю, что сейчас буду придерживаться ручного способа, поскольку для меня это больше связано с опытом обучения. –

ответ

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") 
    } 
} 
+0

Это работает! Большое спасибо за быстрый ответ. Я думаю, я подожду, чтобы увидеть, если другие ответят просто лучше, прежде чем выбрать «правильный» ответ. –

Смежные вопросы