Or even Out-GridView. :)

 



 

 

From: listsad...@lists.myitforum.com [mailto:listsad...@lists.myitforum.com] On 
Behalf Of Magnus Tveten
Sent: Tuesday, September 30, 2014 3:17 PM
To: powershell@lists.myitforum.com
Subject: RE: [powershell] Formatting a ListBox

 

What if you did not use ListBOX but used ListView ?

Listview is capable of having Columns ($objListView.View = 1  #can not remember 
what the different views are..) and with some more code you can enable Column 
sorting...

 

 

$FormWidth    = 300         # 300

$FormHeight   = 500         # 320

 

$objForm = New-Object System.Windows.Forms.Form 

$objForm.Text = "Select user(s)"

$objForm.Size = New-Object System.Drawing.Size($FormWidth,$FormHeight) 

$objForm.StartPosition = "CenterScreen"

       

## ----- Make the ListBox -----

 

$objListView = New-Object System.Windows.Forms.ListView

$ListViewLocationWidth     = $FormWidth * 0.03        

$ListViewLocationHeight    = $FormHeight * 0.09 

$objListView.Location = New-Object 
System.Drawing.Size($ListViewLocationWidth,$ListViewLocationHeight)

$ListViewSizeWidth   = $FormWidth * 0.93        

$ListViewSizeHeight  = $FormHeight * 0.05 

$objListView.Size = New-Object 
System.Drawing.Size($ListViewSizeWidth,$ListViewSizeHeight)

$objListView.Name = 'List of RDS Users'

$objListView.CheckBoxes = $false

$objListView.GridLines = $True

$objListView.visible = $true

$objListView.Sorting = 1

$objListView.View = 1

$objListView.FullRowSelect = $true

 

 

$UserNameColumn = $objListView.columns.add('UserName Name')

$UserNameColumn.Width = 80

$RDSStatus =$objListView.columns.add('RDS Status')

$RDSStatus.Width = 80      

$RDSServer =$objListView.columns.add('RDS Server')

$RDSServer.Width = 80      

 

Function FillListBox

{

    $LoggedOnUsers = Get-RDUserSession -ConnectionBroker "$connectionBroker" 
-CollectionName "$SessionHostCollection" | Sort-Object -Property UserName

    ForEach ($user in $LoggedOnUsers) 

    {

        $RDS_User = "{0,-10}" -f $user.UserName.PadRight(10)

        SWITCH ($user.SessionState)

        {

        "STATE_CONNECTED" { $RDS_Status = "ACTIVE      "}

        "STATE_DISCONNECTED"      { $RDS_Status = "DISCONNECTED"}

        }

        $RDS_Server  = [string] $user.ServerName

        $TheListEntry      = $RDS_User + "| " + $RDS_Status + "; " +  
$RDS_Server.SubString(0,10)

        [void] $objListBox.Items.Add($TheListEntry)

 

        $item1 = new-object System.Windows.Forms.ListViewItem("$RDS_User",0)

$item1.Name = "$RDS_User"

$item1.SubItems.add("$RDS_Status")

        $item1.SubItems.add("$($RDS_Server.SubString(0,10))")

        [void]  $objListView.items.add($item1)

 

    }

}

 

 

Note:

$ItemsSelected = $objListView.SelectedItems 

 

Should return an array of the selected items

 

So you can get info out something like :

 

 

     foreach($thing in $ ItemsSelected)

     {

          $Username = "$($thing.name)"

          $RDSStatus = $($thing.SubItems[0].Text) 

          $RDSServer = $($thing.SubItems[1].Text) 

       

       # DO what ever...

     }

 

 

Note I have not tested this at all... but its more or less copy and paste from 
code I do use...

 

 

  _____  

MAGNUS TVETEN 

SERVER SUPPORT ENGINEER

CO CITRIX/SERVER

Insurance Australia Group Limited

Lvl 1, 23 Lakeside Drive, Burwood 

Burwood East VIC 3151

Australia

 

T +61 3 8804 3226   M +61 411 010 460

E magnus.tve...@iag.com.au <mailto:magnus.tve...@iag.com.au> 

www.iag.com.au <http://www.iag.com.au> 

PLEASE CONSIDER THE ENVIRONMENT BEFORE PRINTING THIS EMAIL.

  _____  

 

From: listsad...@lists.myitforum.com <mailto:listsad...@lists.myitforum.com>  
[mailto:listsad...@lists.myitforum.com] On Behalf Of Michael Leone
Sent: Wednesday, 1 October 2014 6:33 AM
To: powershell@lists.myitforum.com <mailto:powershell@lists.myitforum.com> 
Cc: ntsys...@lists.myitforum.com <mailto:ntsys...@lists.myitforum.com> 
Subject: [powershell] Formatting a ListBox

 

I am not a .Net programmer. But I came across a script online that I find 
useful, and now I am trying to modify it a bit. What the script does is put a 
listbox on a form; the listbox is populated with an entry I am trying to 
construct (by which I mean - I am concatenating 3 string variables together, 
and adding that as the list entry.

Here's the problem: The onscreen formatting needs to be a fixed width, and what 
I am ending up with looks like this:



 

See how it's wandering? I want a fixed font onscreen, and I can't seem to 
figure out how to get it to do that. I am padding the individual components to 
the widths I want, but it still shows onscreen like that.

 

Here's the code snippets:

 

$FormWidth    = 300         # 300

$FormHeight   = 500         # 320

 

$objForm = New-Object System.Windows.Forms.Form 

$objForm.Text = "Select user(s)"

$objForm.Size = New-Object System.Drawing.Size($FormWidth,$FormHeight) 

$objForm.StartPosition = "CenterScreen"

     

## ----- Make the ListBox -----

$objListBox = New-Object System.Windows.Forms.ListBox 

$objListBox.Name = "List of RDS Users"

$ListBoxLocationWidth   = $FormWidth * 0.03     

$ListBoxLocationHeight  = $FormHeight * 0.09    

$objListBox.Location    = New-Object 
System.Drawing.Size($ListBoxLocationWidth,$ListBoxLocationHeight) 

$ListBoxSizeWidth  = $FormWidth * 0.93     

$ListBoxSizeHeight = $FormHeight * 0.05    

$objListBox.Size   = New-Object 
System.Drawing.Size($ListBoxSizeWidth,$ListBoxSizeHeight) 

$objListBox.Height = $FormHeight * 0.41    

$objListBox.ScrollAlwaysVisible   = $true

$objListBox.Font   = "Courier Regular"

$objListBox.SelectionMode = "MultiExtended"

 

     

Function FillListBox

{

$LoggedOnUsers = Get-RDUserSession -ConnectionBroker "$connectionBroker" 
-CollectionName "$SessionHostCollection" | Sort-Object -Property UserName

ForEach ($user in $LoggedOnUsers) 

{

  $RDS_User = "{0,-10}" -f $user.UserName.PadRight(10)

  SWITCH ($user.SessionState)

  {

    "STATE_CONNECTED"   { $RDS_Status = "ACTIVE      "}

    "STATE_DISCONNECTED"     { $RDS_Status = "DISCONNECTED"}

   }

 $RDS_Server  = [string] $user.ServerName

 $TheListEntry = $RDS_User + "| " + $RDS_Status + "; " +  
$RDS_Server.SubString(0,10)

 [void] $objListBox.Items.Add($TheListEntry)

}

 

I'm sure it's simple, but it's eluding my fried brain today. 

Clues, anyone? 


================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1 

  _____  

The information transmitted in this message and its attachments (if any) is 
intended only for the person or entity to which it is addressed. The message 
may contain confidential material and /or personal information. If you have 
received this in error, please contact the sender and delete this e-mail and 
associated material from any computer.

 

  _____  

 


================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1



================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

Reply via email to