bugger
Goto Top

Powershell Auswahlgruppen für Listbox Einträge

Hallo zusammen,

ist es möglich, eine Variable mit mehreren Einträgen zu haben und diese in der Listbox auszuwählen?

Also anstatt
1..4 | %{$objlistbox.SetSelected($_,$true)
das
$var | %{$objlistbox.SetSelected($_,$true)}
und unter $objListBox.Items.AddRange eine $var mit den Inhalten
 $objListBox.Items.AddRange(@(
$var="Item 1",  
"Item 2",  
"Item 3"  

Hoffe es ist klar was ich meine face-smile

Danke und Gruß
Bugger

Hier noch der Code:
$x = @()

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")  
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")   

$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = "Data Entry Form"  
$objForm.Size = New-Object System.Drawing.Size(300,200) 
$objForm.StartPosition = "CenterScreen"  

$objForm.KeyPreview = $True

$objForm.Add_KeyDown({
    if ($_.KeyCode -eq "Enter") {  
        $script:x = $objListbox.SelectedItems
        $objForm.Close()
    }
})

$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")   
    {$objForm.Close()}})

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,320)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"  

$OKButton.Add_Click(
   {
       $script:x = $objListbox.SelectedItems
       $objForm.Close()
   })

$objForm.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,320)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"  
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)

$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20) 
$objLabel.Size = New-Object System.Drawing.Size(280,20) 
$objLabel.Text = "Please make a selection from the list below:"  
$objForm.Controls.Add($objLabel) 

$objListbox = New-Object System.Windows.Forms.Listbox 
$objListbox.Location = New-Object System.Drawing.Size(10,40) 
$objListbox.Size = New-Object System.Drawing.Size(260,20) 

$Font = New-Object System.Drawing.Font("Verdana",10,[System.Drawing.FontStyle]::Regular)  
# Font styles are: Regular, Bold, Italic, Underline, Strikeout
$objForm.Font = $Font
$objForm.AutoSize = $True
$objForm.AutoSizeMode = "GrowAndShrink"  

$objListbox.SelectionMode = "MultiExtended"  

$trennstriche = @('----------Test-Eintrag----------','','Test2')  

$objListBox.Items.AddRange(@(
"Item 1"  
"Item 2"  
"Item 3"  
$trennstriche
"Item 4"  
"Item 5"  
$trennstriche
"Item 6"  
$trennstriche[1]
"Item 7"  
$trennstriche
"Item 8"  
$trennstriche[2]
"Item 9"  
))

$ItemButton1 = New-Object System.Windows.Forms.Button
$ItemButton1.Location = New-Object System.Drawing.Size(75,380)
$ItemButton1.Size = New-Object System.Drawing.Size(80,80)
$ItemButton1.Text = "Item 1 und Item 2"  
$objForm.Controls.Add($ItemButton1)

$ItemButton1.Add_Click(
   {
1..4 | %{$objlistbox.SetSelected($_,$true)}
   })
   
$ItemButton2 = New-Object System.Windows.Forms.Button
$ItemButton2.Location = New-Object System.Drawing.Size(160,380)
$ItemButton2.Size = New-Object System.Drawing.Size(80,80)
$ItemButton2.Text = "Item 6, 7 und 8"  
$objForm.Controls.Add($ItemButton2)

$ItemButton2.Add_Click(
   {
4..5 | %{$objlistbox.SetSelected($_,$true)}
   })

$objListbox.Height = 270

$objListbox.add_SelectedIndexChanged({
   $objListbox.SelectedIndices | ?{$objListbox.GetSelected($_) -and $objListbox.Items[$_] -in $trennstriche} | %{$objListbox.SetSelected($_,$false)}
})

$objForm.Controls.Add($objListbox) 
$objForm.Topmost = $True

$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

$x

Content-ID: 359347

Url: https://administrator.de/contentid/359347

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

colinardo
Lösung colinardo 28.12.2017 aktualisiert um 12:25:59 Uhr
Goto Top
Servus @Bugger ,
guckst du:
$items = @("Ja","is","denn","heut'","scho","Weihnachten?")  
$objListbox.Items.AddRange($items)
$items |%{$objListbox.SelectedItem = $_}
Hoffe es ist klar was ich meine
Hoff ich auch face-smile.

Grüße Uwe
Bugger
Bugger 28.12.2017 um 12:41:04 Uhr
Goto Top
Danke, sieht schonmal gut aus face-smile

Kann man auch beides haben? Also so, dass man die Trennstriche zwischen mehreren Gruppen wieder nutzen kann. Und eventuell auch von der Gruppe getrennte Einträge hat.
colinardo
colinardo 28.12.2017 aktualisiert um 12:47:32 Uhr
Goto Top
Kannst du, selektiert wird immer nur das was du mit der Variablen vorgibst, andere Vorhandene stören dabei nicht. Jeder Eintrag sollte dabei natürlich eindeutig sein sonst bringt das ganze ja nichts ...

Ich würde mal über ein "DataGridView" nachdenken.
Bugger
Bugger 28.12.2017 aktualisiert um 12:51:55 Uhr
Goto Top
Ja, habe mal wieder zu kompliziert gedacht :D

Einfach
$objListBox.Items.AddRange(@(
"blablabla"  
$items

Funktioniert wunderbar. DataGridView muss ich mir mal genauer anschauen.

Vielen Dank und schonmal einen Guten Rutsch face-wink

Gruß
Bugger