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:
[image: Inline image 1]
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?