Авто Генерация переменных поля - PullRequest
0 голосов
/ 22 октября 2018

Я использую следующий код для создания флажков на графическом интерфейсе PowerShell -

$databases_checkBox_1 = New-Object system.windows.Forms.CheckBox
$databases_checkbox_1.Width = 200
$databases_checkBox_1.location = new-object system.drawing.point(245,$y)
$y=$y+30

$databases_checkBox_2 = New-Object system.windows.Forms.CheckBox
$databases_checkbox_2.Width = 200
$databases_checkBox_2.location = new-object system.drawing.point(245,$y)
$y=$y+30

$databases_checkBox_3 = New-Object system.windows.Forms.CheckBox
$databases_checkbox_3.Width = 200
$databases_checkBox_3.location = new-object system.drawing.point(245,$y)
$y=$y+30

$databases_checkBox_4 = New-Object system.windows.Forms.CheckBox
$databases_checkbox_4.Width = 200
$databases_checkBox_4.location = new-object system.drawing.point(245,$y)
$y=$y+30

Но я хочу сгенерировать количество 'X' флажков, так как список может составлять до ста - любая идея, какзаставить их автоматически генерировать?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Запускайте код создания флажков в цикле столько раз, сколько флажков вы хотите создать (не забудьте добавить элементы управления в форму после их создания).В конце каждой итерации выведите созданный объект и соберите все выходные данные цикла в переменную:

$checkboxes = 0..3 | ForEach-Object {
    $cb = New-Object Windows.Forms.CheckBox
    $cb.Width = 200
    $cb.Location = New-Object Drawing.Point(245, $y)
    $y += 30

    $form.Controls.Add($cb)

    $cb
}

Как только вы это сделаете, вы сможете получить доступ к каждому флажку по его индексу в массиве.Например:

$checkboxes[2].Checked

даст вам «проверенный» статус третьего флажка (массивы PowerShell начинаются с нуля).

0 голосов
/ 22 октября 2018

Не самое красивое решение, но оно должно работать.В этом примере можно создать только 5 переменных (0..4).

$y = 0
0..4 | foreach {
    $currentVar = New-Variable -Name databases_checkBox_$_ -Value $(New-Object System.Windows.Forms.CheckBox) -PassThru
    $currentVar.Value.Width = 200
    $currentVar.Value.Location = New-Object System.Drawing.Point(245,$y)
    $y = $y+30
}

Вы можете выполнить двойную проверку, запустив Get-Variable databases_checkBox*.

Как говорится, если вам нужно их сотниочень быстро запутаемся.Примите комментарий Ансгара как слово совета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...