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-Key: 359347

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

Printed on: April 25, 2024 at 08:04 o'clock

Member: colinardo
Solution colinardo Dec 28, 2017 updated at 11:25:59 (UTC)
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
Member: Bugger
Bugger Dec 28, 2017 at 11:41:04 (UTC)
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.
Member: colinardo
colinardo Dec 28, 2017 updated at 11:47:32 (UTC)
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.
Member: Bugger
Bugger Dec 28, 2017 updated at 11:51:55 (UTC)
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