验证至少一个复选框已被选中

时间:2015-01-08 15:12:18

标签: .net powershell checkbox

我有兴趣让用户至少检查一个选项。它有多少并不重要,但至少需要检查一个。如果没有,则需要生成错误。

有没有办法用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'

1 个答案:

答案 0 :(得分:1)

使用if-test可以轻松完成,例如:

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

什么时候检查?

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

  • 在按钮被选中之前,按钮是否应被禁用(灰显)? 将if-test和启用/禁用按钮代码添加到checked-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
}