自动生成字段变量

Auto Generating field variables

我使用以下代码在 powershell GUI 上生成复选框-

$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' 个复选框,因为列表可能多达一百个 - 知道如何让它们自动生成吗?

不是最漂亮的解决方案,但它应该有效。在此示例中仅创建 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*.

仔细检查

话虽这么说 - 如果您要处理数百个,很快就会变得一团糟。以 Ansgar 的评论为忠告。

运行 复选框创建代码的循环次数与您要创建的复选框的数量一样多(不要忘记在创建控件后将控件添加到表单中)。在每次迭代结束时输出创建的对象并将循环的所有输出收集在一个变量中:

$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

将为您提供第三个复选框的 "checked" 状态(PowerShell 数组从零开始)。