2017-11-17 164 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

相關問題