2017-11-17 163 views
0

我在PowerShell中有一个基本的表单用户界面。我有下面的代码系列3个个人复选框:Powershell复选框,选择其他复选框

$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(或任何其他复选框),它将自动取消选中“全选”复选框。这可能吗?

回答

1

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

$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。我认为更好的方式来做到这一点是写任何的前三个复选框被点击的时候,你可以引用一个功能,并将其取消选中“全选”复选框(见下文)

function Uncheck-SelectAllBox 
{ 
    $cb4Checkbox.Checked = $false 
} 

$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" 
$cb1Checkbox.add_click({ Uncheck-SelectAllBox }) 
$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" 
$cb2Checkbox.add_click({ Uncheck-SelectAllBox }) 
$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" 
$cb3Checkbox.add_click({ Uncheck-SelectAllBox }) 
$form.Controls.Add($cb3Checkbox) 

$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) 
+0

唐别忘了改变'$ cb4Checkbox'的位置坐标 – cet51

相关问题