2015-01-08 40 views
0

我有兴趣让用户至少选中一个选项。有多少不重要,但至少有一个需要检查。如果没有,则需要生成错误。PowerShell .NET验证至少一个复选框

有没有办法与GroupBox或其他类型的容器做到这一点?

代码:

$groupBox1 = New-Object System.Windows.Forms.GroupBox 
$groupBox1.Location = New-Object System.Drawing.Point(8, 120) 
$groupBox1.Size = New-Object System.Drawing.Size(120, 144) 
$groupBox1.TabIndex = 0 
$groupBox1.TabStop = $false 
$groupBox1.Text = 'Options:' 

$checkBox1 = New-Object System.Windows.Forms.CheckBox 
$checkBox1.Location = New-Object System.Drawing.Point(8, 8) 
$checkBox1.TabIndex = 1 
$checkBox1.Text = 'Banana' 

$checkBox2 = New-Object System.Windows.Forms.CheckBox  
$checkBox2.Location = New-Object System.Drawing.Point(8, 40) 
$checkBox2.TabIndex = 2 
$checkBox2.Text = 'Apple' 

我发现了一些信息,但它是所有javascript

谢谢你的帮助。

if($checkBox1.Checked -or $checkBox2.Checked) { 
    #Continue work 
} 

什么时候应该检查:

完整的解决方案感谢佛罗多˚F:

$P21CheckBox1 = New-Object System.Windows.Forms.CheckBox 
$P21CheckBox1.Location = New-Object System.Drawing.Point(150, 150) 
$P21CheckBox1.AutoSize = $True 
$P21CheckBox1.TabIndex = 1 
$P21CheckBox1.Text = 'E-Mail notification' 
$P21CheckBox1.Add_CheckStateChanged({ 
    if($P21CheckBox1.Checked -or $P21CheckBox2.Checked) { 
     $P21Button1.Enabled = $True 
    } 
    else { 
     $P21Button1.Enabled = $False 
    } 
}) 
$P21.Controls.Add($P21CheckBox1) 

$P21CheckBox2 = New-Object System.Windows.Forms.CheckBox  
$P21CheckBox2.Location = New-Object System.Drawing.Point(150, 170) 
$P21CheckBox1.AutoSize = $True 
$P21CheckBox2.TabIndex = 2 
$P21CheckBox2.Text = 'Open the result' 
$P21CheckBox2.Add_CheckStateChanged({ 
    if($P21CheckBox1.Checked -or $P21CheckBox2.Checked) { 
     $P21Button1.Enabled = $True 
    } 
    else { 
     $P21Button1.Enabled = $False 
    } 
}) 
$P21.Controls.Add($P21CheckBox2) 


$P21Button1 = New-Object System.Windows.Forms.Button 
$P21Button1.Text = 'Execute' 
$P21Button1.TabIndex = 7 
$P21Button1.BackColor = $ButtonExecuteBackColor 
$P21Button1.Enabled = $False 
$P21Button1.add_Click(
    #Continue the work 
) 
$P21Button1.Location = $ButtonExecuteLocation 
$P21Button1.Size = $ButtonExecuteSize 
$P21.Controls.Add($P21Button1) 

回答

1

这是使用如果测试一样容易呢?

  • 当你点击一个按钮?在按钮的click-eventhandler中添加if-test。

  • 一个按钮被禁用(灰色),直到检查按钮? 将if-test和启用/禁用按钮代码添加到check-eventhandler复选框。

如果点击一个按钮时,该选项被选中,而你只想要生成错误,然后:

if(-not($checkBox1.Checked -or $checkBox2.Checked)) { 
    #Throw exception 
    Write-Error No checkboxes checked 

    #Error popup only 
    [System.Windows.Forms.MessageBox]::Show("Check minimum one checkbox!", 
            "ERROR", 
            [System.Windows.Forms.MessageBoxButtons]::OK, 
            [System.Windows.Forms.MessageBoxIcon]::Error) | Out-Null 
} 
+0

非常感谢您!这对我有很大的帮助:)我已经用你提供的完整解决方案更新了我的问题。真棒! – DarkLite1

相关问题