Wieso funktionier bei mir [System.Windows.MessageBox]::Show($DropDown)::OK in PowerShell nicht??
Hallo,
wo liegt die Fehler wieso funktioniert der [System.Windows.MessageBox]::Show($DropDown)::OK Befehl in meiner Code nicht??
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$Form = [System.Windows.Forms.MessageBox]::OK
$Form.width = 300
$Form.height = 150
$Form.Text = ”DropDown”
$DropDown = [System.Windows.MessageBox]::Show($DropDown)::OK
$DropDown.Location = new-object System.Drawing.Size(100,10)
$DropDown.Size = new-object System.Drawing.Size(130,30)
ForEach ($Item in $DropDownArray) {
[void] $DropDown.Items.Add($Item)
}
$Form.Controls.Add($DropDown)
$DropDownLabel = [System.Windows.MessageBox]::Show($DropDown)::OK
$DropDownLabel.Location = new-object System.Drawing.Size(10,10)
$DropDownLabel.size = new-object System.Drawing.Size(100,40)
$DropDownLabel.Text = "Suchen Sie die Pfad aus"
$Form.Controls.Add($DropDownLabel)
$Form.Controls.Add($DropDown)
$DropDownLabel = [System.Windows.MessageBox]::Show($Form)::OK
$DropDownLabel.Location = new-object System.Drawing.Size(10,10)
$DropDownLabel.size = new-object System.Drawing.Size(100,40)
$DropDownLabel.Text = "Zeit"
$Form.Controls.Add($DropDownLabel)
$Button = [System.Windows.MessageBox]::Show($Button)::OK
$Button.Location = new-object System.Drawing.Size(100,50)
$Button.Size = new-object System.Drawing.Size(100,20)
$Button.Text = "Weiter"
$Button.Add_Click({Return-DropDown})
$form.Controls.Add($Button)
$result=[System.Windows.MessageBox]::Show($Form,$Button,$DropDownLabel,$DropDown,[System.Windows.MessageBoxResult]::OK)
return $script:choice
1 Antwort
Ich erspare es mir mich durch einen Wust von Fehlermeldungen zu hangeln.
Ich habe keien Ahnung warum Du etwas schreibst und nicht weist wie es funktioniert.
Ok Du hast es nicht geschrieben, sondern irgendeine Uraltquelle kopiert. ([System.Reflection.Assembly]::LoadWithPartialName() ist sowas von veraltet..🤮)
In Anbetracht dessen, das Du der Messagebox ein vorgegebene Position/Größe/etc aufs Auge drücken willst, musst Du dich nicht wundern, wenn Powershell garnicht aus dem Rot herauskommt. Zur Formatierung der Messagebox habe ich ja bereits etwas geschrieben https://www.gutefrage.net/frage/powershell-pop-up-fenstergroesse-aendern#answer-384540309
Anwendung von Messagebox:
Add-Type -a PresentationFramework
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageIcon = [System.Windows.MessageBoxImage]::Asterisk
$MessageBody = "Das ist eine Nachricht`r`n...mit erzwungenem Zeielnvorschub`r`n...und noch eienem"
$MessageTitle = "Mitteilung"
$Result = [System.Windows.MessageBox]::Show($MessageBody,$MessageTitle,$ButtonType,$MessageIcon)
$Result
Messagebox wird in mehreren Instanzen vererbt. ergo macht es keinen großen Unterschied welches Assembly du verwendest. System.Windows.Forms definiert jedoch nicht die Variable .MessageBoxImage .
Gewöhnlich begnügt man sich ohnehin mit den direkten Aufruf von ::Show() ohne Vorgeplänkel und der Übergabe der numerischen Werte für die Buttonconfig und Icon ,usw.
dann genügt es sich einfach mit Forms als Assembly zu begnügen...
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("Hallo ich bin eine Nachricht","Titel",0,64)
Keien Ahnung was Du vorhast... gewöhnlich sollte man jedoch erstmal die Grundlagen von Powershell und .Net beherrschen, bevor man sich auf die freihändige Definition von Fensterelementen stürzt.