2015-01-08 2 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.

Благодарим за помощь.

полное решение благодаря Фродо 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

Это легко сделать с помощью теста, если-, как:

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

Когда он должен проверить?

  • Когда вы нажимаете кнопку? Добавьте if-test внутри манипулятора click-event вашей кнопки.

  • Если кнопка отключена (выделена серым цветом), пока не будет отмечена кнопка? Добавьте код проверки if-test и enable/disable к флажкам 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

Смежные вопросы