我使用以下代码在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”数量的复选框,因为该列表可能多达一百个-知道如何使它们自动生成吗?
答案 0 :(得分:1)
与要创建的复选框数量一样,在循环中运行复选框创建代码(不要忘记在创建控件后将其添加到表单中)。在每次迭代结束时,输出创建的对象,并将循环的所有输出收集到一个变量中:
$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阵列从零开始)。
答案 1 :(得分:0)
不是最漂亮的解决方案,但它应该可以工作。在此示例中,仅创建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的评论作为建议。