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

Validate at least one checkbox has been checked

我希望让用户至少选中一个选项。有多少并不重要,但至少需要检查一个。如果不是,则需要生成错误。

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

这可以使用 if 测试轻松完成,例如:

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

什么时候检查?

  • 当您单击按钮时? 在按钮的单击事件处理程序中添加 if 测试。

  • 是否应在选中按钮之前将其禁用(变灰)? 将 if-test 和 enable/disable 按钮代码添加到复选框 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
}