Powershell复选框,用于选择其他复选框

时间:2017-11-17 21:58:30

标签: powershell checkbox

我在PowerShell中有一个基本的表单UI。我有一系列3个单独的复选框,其中包含以下代码:

    $CBlabel = New-Object System.Windows.Forms.Label
    $CBlabel .Location = New-Object System.Drawing.Point(10,125)
    $CBlabel .Size = New-Object System.Drawing.Size(280,20)
    $CBlabel .Text = "Select a box:"
    $form.Controls.Add($CBlabel )

    $cb1Checkbox = New-Object System.Windows.Forms.Checkbox
    $cb1Checkbox .Location = New-Object System.Drawing.Size(10,145)
    $cb1Checkbox .Size = New-Object System.Drawing.Size(280,20)
    $cb1Checkbox .Text = "Checkbox 1"
    $form.Controls.Add($cb1Checkbox )

    $cb2Checkbox = New-Object System.Windows.Forms.Checkbox
    $cb2Checkbox .Location = New-Object System.Drawing.Size(10,165)
    $cb2Checkbox .Size = New-Object System.Drawing.Size(280,20)
    $cb2Checkbox .Text = "Checkbox 2"
    $form.Controls.Add($cb2Checkbox )

    $cb3Checkbox = New-Object System.Windows.Forms.Checkbox
    $cb3Checkbox .Location = New-Object System.Drawing.Size(10,185)
    $cb3Checkbox .Size = New-Object System.Drawing.Size(280,20)
    $cb3Checkbox .Text = "Checkbox 3"
    $form.Controls.Add($cb3Checkbox )

我想在此下方添加第4个复选框,其中显示"全选"如果可能的话,让它变得动态。如果我选择它,它会自动选择复选框1,2和3.如果我取消选中复选框2(或任何其他复选框),它会自动取消选择"全选"复选框。这可能吗?

2 个答案:

答案 0 :(得分:1)

也许这是一个可能的解决方案?

import { AppRegistry } from 'react-native';
import App from './app/';

AppRegistry.registerComponent('airand', () => App);

对于取消选中“全选”复选框的请求,您需要为前三个复选框执行$cb4Checkbox = New-Object System.Windows.Forms.Checkbox $cb4Checkbox.Location = New-Object System.Drawing.Size(x,y) $cb4Checkbox.Size = New-Object System.Drawing.Size(x,y) $cb4Checkbox.Text = "Checkbox 4 - Select All" $cb4Checkbox.Add_Click({ If ($cb4CheckBox.Checked -eq $true){ $cb1Checkbox.Checked = $true $cb2Checkbox.Checked = $true $cb3Checkbox.Checked = $true } }) $form.Controls.Add($cb4Checkbox) ,这会导致“全选”复选框变为未选中状态。我相信更好的方法是编写一个函数,在单击前三个复选框中的任何一个时可以引用它,并取消选中“全选”复选框(见下文)

.add_click

答案 1 :(得分:1)

我一直在努力寻求一种更动态的方法,并提出了以下建议。创建一个GroupBox(在我的示例中为“ $ grpbox”名称)并将其添加到表单,将复选框添加到组框而不是表单:

将复选框添加到组框(非表单)

$grpBox.Controls.Add($cb1Checkbox)

调用新创建的函数

$cb4Checkbox.Add_Click({clkSelectAll})

添加新功能以查找组框中的所有复选框并选中它们

function clkSelectALL() {

    Foreach ($control in $grpbox.Controls){
        $objectType = $control.GetType().Name
        If ($objectType -like "CheckBox"){
            $control.checked = $true
        }
    }
}

当然可以在函数中添加更多逻辑。