StefanS1982
-
Gesamte Inhalte
2 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von StefanS1982
-
-
Hallo zusammen,
ich arbeite mich gerade in PS ein und bin dabei ein kleines Script zu schreiben welches dem User mittels zwei Radiobuttons Auswahlmöglichkeiten bietet.
Es soll folgendes Verhalten zeigen:
Form wird geladen und nur die Radiobuttons sind zu sehen.
Bei Auswahl von Option 1 erscheint rechts der GroupBox eine ListBox aus der dann ein Eintrag ausgewählt werden kann.
Bei Auswahl von Option 2 erscheint eine andere ListBox aus der ein Eintrag ausgewählt werden kann.
Ich möchte jedoch das immer nur die ListBox zu sehen ist, welche zu dem ausgewählten RadioButton gehört.
Das Einblenden der ListBoxen funktioniert, aber wenn die einmal mittels .Add_Click Event eingeblendet sind, bekomme ich sie nicht mehr ausgeblendet.
Hat vielleicht jemand eine Lösung für mein Problem?
Ich google mir seit knapp einer Woche nen Wolf und komm nicht weiter. Daher dacht ich mich mir stell mal hier die Frage. Vermutlich ist es ziemlich einfach und ich sehe den Wald vor lauter Bäumen nicht.
Grüße
Stefan
Hier mal der Code:
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $Abfrage=New-Object System.Windows.Forms.Form $Abfrage.StartPosition="CenterScreen" $Abfrage.Size=New-Object System.Drawing.Size(1000,600) $Abfrage.Text="Allgemeine Infos" $Abfrage.Font=New-Object System.Drawing.Font("Microsoft Sans Serif",12) $Group=New-Object System.Windows.Forms.GroupBox $Group.Name="Group" $Group.Text="Gruppe" $Group.Location=New-Object System.Drawing.Point(10,40) $Group.Size=New-Object System.Drawing.Size(220,130) $Abfrage.Controls.Add($Group) $Option1=New-Object System.Windows.Forms.RadioButton $Option2=New-Object System.Windows.Forms.RadioButton $Option1.Name="Option1" $Option2.Name="Option2" $Option1.Text="Option1" $Option2.Text="Option2" $Option1.Location=New-Object System.Drawing.Point(10,20) $Option2.Location=New-Object System.Drawing.Point(10,50) $Option1.Size=$Option2.Size=New-Object System.Drawing.Size(180,40) $Option1, $Option2 | ForEach-Object {$Group.Controls.Add($_)} $Option1.Add_Click({ $Auswahlfeld2=New-Object System.Windows.Forms.Listbox $Auswahlfeld2.SelectionMode="One" $Auswahlfeld2.Height=150 $Auswahlfeld2.Width=150 $Auswahlfeld2.Location =New-Object System.Drawing.Point(500,50) $Abfrage.Controls.Add($Auswahlfeld2) $Abfrage.Controls.Remove($Auswahlfeld) }) $Option2.Add_Click({ $Auswahlfeld=New-Object System.Windows.Forms.Listbox $Auswahlfeld.SelectionMode="One" $Auswahlfeld.Height=150 $Auswahlfeld.Width=150 $Auswahlfeld.Location =New-Object System.Drawing.Point(300,50) $Abfrage.Controls.Add($Auswahlfeld) $Abfrage.Controls.Remove($Auswahlfeld2) }) [void]$Abfrage.ShowDialog()
Powershell GUI Listbox ein-/ausblenden
in Windows Forum — Scripting
Geschrieben · bearbeitet von StefanS1982
Danke! Das war die Lösung!
Ich weiß um PS und GUI, aber im angestrebten Nutzungsfall ist PS der kleinste gemeinsame Nenner und ich brauche nur 2 Formulare auf denen insgesamt keine 10 Optionen verteilt sind. Daher habe ich mich für PS entschieden.
Die Lösung ist es die Objekte $Auswahlfeld und $Auswahlfeld2 auf global zu setzen.
Ich weiß nicht ob es da eine "bessere" oder andere Lösung gibt, aber für mein Problem funktioniert sie :)
$Option1.Add_Click({ $global:Auswahlfeld2=New-Object System.Windows.Forms.Listbox $Auswahlfeld2.SelectionMode="One" $Auswahlfeld2.Height=150 $Auswahlfeld2.Width=150 $Auswahlfeld2.Location =New-Object System.Drawing.Point(500,50) Write-Host 'Option1' Write-Host "Auswahlfeld2: $Auswahlfeld2" Write-Host "Auswahlfeld: $Auswahlfeld" $Abfrage.Controls.Add($Auswahlfeld2) $Abfrage.Controls.Remove($Auswahlfeld) }) $Option2.Add_Click({ $global:Auswahlfeld=New-Object System.Windows.Forms.Listbox $Auswahlfeld.SelectionMode="One" $Auswahlfeld.Height=150 $Auswahlfeld.Width=150 $Auswahlfeld.Location =New-Object System.Drawing.Point(300,50) Write-Host 'Option2' Write-Host "Auswahlfeld2: $Auswahlfeld2" Write-Host "Auswahlfeld: $Auswahlfeld" $Abfrage.Controls.Add($Auswahlfeld) $Abfrage.Controls.Remove($Auswahlfeld2) })