Powershell Button um Listbox einträge auszuwählen
Hallo,
ist es möglich Einträge in einer Listbox per extra Button auszuwählen? In einer langen Liste hätte man so einige abkürzungen. Beim Code unten sieht man vll. was ich meine
ist es möglich Einträge in einer Listbox per extra Button auszuwählen? In einer langen Liste hätte man so einige abkürzungen. Beim Code unten sieht man vll. was ich meine
$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(
{
??????????????????????????????
})
$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(
{
??????????????????????????????
})
$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
Please also mark the comments that contributed to the solution of the article
Content-Key: 281198
Url: https://administrator.de/contentid/281198
Printed on: April 26, 2024 at 03:04 o'clock
4 Comments
Latest comment
Moin Bugger,
Schau dir mal Zeile 105 an, dort findest du den passenden Befehl um Einträge zu selektieren:
Der erste Parameter ist der Index des Eintrags welcher selektiert werden soll (fängt bei 0 an zu zählen) und das $true besagt das dieser Eintrag markiert werden soll.
Gruß jodel32
Schau dir mal Zeile 105 an, dort findest du den passenden Befehl um Einträge zu selektieren:
$objListbox.SetSelected(0,$true)
Gruß jodel32
Stichwort ForEach Schleife ...
oder eine ganze ununterbrochene Reihe
0,1,2,5,7,8 | %{$objlistbox.SetSelected($_,$true)}
0..10 | %{$objlistbox.SetSelected($_,$true)}