Hello Ninja’s,
I have a problem. I am trying to get a function to execute inside of a button click event. I would expect that if it was a scope issue, that it wouldn’t event affect the target (in this case, a list box), however, it does! But it comes back with a blank entry addition. Here is a sample to demonstrate what I am talking about.
Add-type -AssemblyName System.Windows.Forms,System.Drawing
$Main = [Windows.Forms.Form]@{
ClientSize = "1024,768"
Text = "AGDLP Master-Tron-O-Matic 9000+"
MinimumSize = "800,600"
}
$Script:LogBox = [Windows.Forms.ListBox]@{
Enabled = $True
Size = "1004,190"
Location = "10,568"
Anchor = "Bottom,Top,Left,Right"
SelectionMode = "MultiExtended"
}
$Main.Controls.Add($Script:LogBox)
Function AddLogEntry {
Param (
[String]$Input
)
$VisibleItems = $Script:LogBox.ClientSize.Height / $Script:LogBox.ItemHeight
$Script:LogBox.TopIndex = [Math]::Max(($Script:LogBox.Items.Count - $VisibleItems + 1), 0)
$Script:LogBox.Items.Add($Input)
}
$TestButton = [Windows.Forms.Button]@{
Text = "Text Log Entry"
Size = "120,20"
Location = "10,10"
}
$TestButton_Click = {
AddLogEntry -Input "This is a random number: $(Get-Random 1000000)"
$Script:LogBox.Items.Add("This is a random number: $(Get-Random 1000000)")
}
$TestButton.Add_Click($TestButton_Click)
$Main.Controls.Add($TestButton)
[Windows.Forms.Application]::Run($Main)
Does anyone know what is going on here? I have been beating my head over this for awhile.