Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Listbox

179 views
Skip to first unread message

Anatoli

unread,
Dec 2, 2007, 3:05:02 PM12/2/07
to
Hi,

Can someone kindly show me how to create a listbox where I can select
multiple selections and pass them to a variable? I can't seem to find an
example of this anywhere using powershell.

thanks,

Shay Levi

unread,
Dec 2, 2007, 3:39:03 PM12/2/07
to
Hi

I used Jeffery Snover's get-guiinput.ps1 script and added the listbox code:


[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")


###############################
# Create the form
$form = New-Object System.Windows.Forms.Form
$form.add_shown({$form.Activate()})
$form.Text = "PowerShell GUI Input"
$form.height = 110

###############################
# Create the OK button and when the OK button is clicked hide the form
$OK = new-object system.windows.forms.button
$OK.Text = "OK"
$OK.dock = "bottom"
$OK.Add_Click({
$form.hide()
})

$lb = new-object System.Windows.Forms.ListBox
[void]$lb.Items.Add("powershell")
[void]$lb.Items.Add("rocks!")

###############################
# add the controls to the form
$form.Controls.AddRange(@($lb,$OK))


###############################
# show the form
$results = $form.showdialog()
# show the results
$lb.SelectedItem
$lb.SelectedIndex
write-host "SelectedItem=$SelectedItem"
write-host "SelectedIndex=$SelectedIndex"

$form.dispose()

-----
Shay Levi
$cript Fanatic
http://scriptolog.blogspot.com
Hebrew weblog: http://blogs.microsoft.co.il/blogs/scriptfanatic

Anatoli

unread,
Dec 2, 2007, 4:09:02 PM12/2/07
to
Thanks Shay, is there a way to change this around to be a drop down list and
how does one select more than one item? I tried to select both items supplied
in the script and couldn't.

regards,

Anatoli

Shay Levi

unread,
Dec 2, 2007, 4:46:25 PM12/2/07
to
Anatoli,

Add this line after $lb the declaration:

$lb.SelectionMode = [System.Windows.Forms.SelectionMode]::MultiSimple

or

$lb.SelectionMode = [System.Windows.Forms.SelectionMode]::MultiExtended


Then call

$lb.SelectedItems


From MSDN

The SelectionMode property enables you to determine how many items in the
ListBox a user can select at one time and how the user can make multiple-selections.
When the SelectionMode property is set to SelectionMode.MultiExtended, pressing
SHIFT and clicking the mouse or pressing SHIFT and one of the arrow keys
(UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW) extends the selection
from the previously selected item to the current item. Pressing CTRL and
clicking the mouse selects or deselects an item in the list. When the property
is set to SelectionMode.MultiSimple, a mouse click or pressing the SPACEBAR
selects or deselects an item in the list.


I'll have to check for the drop down list tommorow, my wife wants to watch
a movie now :-)
You can find more information here:

http://msdn2.microsoft.com/en-us/library/system.windows.forms.listbox_properties.aspx

> Thanks Shay, is there a way to change this around to be a drop down

Oisin Grehan

unread,
Dec 2, 2007, 4:52:32 PM12/2/07
to

Hi Anatoli,

I've written a blog post detailing how to do this (it requires a
snapin to do it cleanly):

http://www.nivot.org/2007/12/02/UsingWindowsFormsControlsInPowerShell1ListBox.aspx

It's also available on my PowerShellCommunity.org blog, available via:
http://oisin.powershell.com/

Hope this helps,

- Oisin / x0n
http://www.nivot.org
http://oisin.powershell.com


Shay Levi

unread,
Dec 2, 2007, 4:52:07 PM12/2/07
to
Small update before the movie starts, to display the listbox with pre selected
items:

$lb = new-object System.Windows.Forms.ListBox
$lb.SelectionMode = [System.Windows.Forms.SelectionMode]::MultiExtended

[void]$lb.Items.Add("powershell")
[void]$lb.Items.Add("rocks!")

$lb.SetSelected(0,$true)
$lb.SetSelected(1,$true)
$form.Controls.AddRange(@($lb,$OK))

HTH

>>> m s")

Shay Levi

unread,
Dec 3, 2007, 5:01:55 AM12/3/07
to
Hi

here's a sample with a combo box, it works quite the same as ListBox

$cb = new-object System.Windows.Forms.ComboBox
[void]$cb.Items.Add("powershell")
[void]$cb.Items.Add("rocks!")
$form.Controls.AddRange(@($cb,$OK))
$results = $form.showdialog()

write-host "SelectedItem=$($cb.SelectedItem)"
write-host "SelectedIndex=$($cb.SelectedIndex)"

More info on MSDN:
http://msdn2.microsoft.com/en-us/library/system.windows.forms.combobox.aspx

> Thanks Shay, is there a way to change this around to be a drop down

Jon

unread,
Dec 4, 2007, 5:24:04 AM12/4/07
to

"Anatoli" <Ana...@discussions.microsoft.com> wrote in message
news:3D895363-ED33-4564...@microsoft.com...

> Thanks Shay, is there a way to change this around to be a drop down list
> and
> how does one select more than one item? I tried to select both items
> supplied
> in the script and couldn't.
>
> regards,
>
> Anatoli
>


I'll make a general suggestion.

I've found it sometimes helps to design your form the way you like it, in
Visual Studio, - customize it according to taste - and then set about
converting the code in the associated form file to powershell code.

Hope that helps.

--
Jon


0 new messages