diesen Code vor:Warum kann ich DialogResult eines Formulars nicht in einem Ereignishandler in PowerShell festlegen?
$Form = New-Object System.Windows.Forms.Form
$YesButton = New-Object System.Windows.Forms.Button
$YesButton.Text = "Yes"
$YesButton.Location = New-Object System.Drawing.Point(`
(($Form.Width/2) - ($YesButton.Width)), 25)
$YesButton.Add_Click({$Form.DialogResult=[System.Windows.Forms.DialogResult]::OK})
$NoButton = New-Object System.Windows.Forms.Button
$NoButton.Text = "No"
$NoButton.Location = New-Object System.Drawing.Point(`
($YesButton.Location.X + $YesButton.Width + 10), $YesButton.Location.Y)
$NoButton.Add_Click({$Form.DialogResult=[System.Windows.Forms.DialogResult]::Cancel})
$Form.Controls.Add($YesButton)
$Form.Controls.Add($NoButton)
$Timer = new-object System.Windows.Forms.Timer
$Timer.Add_Tick(
{
$Form.DialogResult = [System.Windows.Forms.DialogResult]::None
$Form.Close()
})
$Timer.Interval = 3000
$Timer.start()
$Result = $Form.ShowDialog()
if ($Result -eq "OK")
{
Write-Output "User selected 'Yes'."
}
elseif ($Result -eq "Cancel")
{
Write-Output "User selected 'No'."
}
elseif ($Result -eq "None")
{
Write-Output "User selected nothing; prompt timed out."
}
Wenn ich es laufen und der Timer-Tick lasse das Formular schließen, würde ich erwarten es die elseif ($Result -eq "None")
und damit drucken User selected nothing; prompt timed out.
, schlagen, aber es wird stattdessen die elseif ($Result -eq "Cancel")
und Druck User selected 'No'.
schlagen
Warum tut es das, und wie bekomme ich es, um das gewünschte Dialog-Ergebnis zurückzugeben?
Leider habe ich die alten Nachrichten an Ort und Stelle gelassen, wenn auf eine Übersetzung [MCVE]. Ich habe aktualisiert. Es trifft den zweiten Zweig '$ Result -eq" Cancel "' und ich frage mich, warum es nicht das dritte '$ Result -eq" None "' trifft. Siehe meine Aktualisierungen. –
Es trifft den zweiten Zweig - 'elseif ($ Result -eq" Cancel ")'. Es bewertet nicht einmal den dritten Zweig, also ist es egal, was ich dort hineinlege. –
Das ist nur, wenn der keine Knopf geklickt wird, was nicht ist, oder? Ich klicke nicht auf einen der beiden Buttons - Ja oder Nein. –