Reputation: 83
This particular powershell code does not work for me, I'm wondering what I'm doing wrong here (I am in the process of learning Powershell - I am quite new to it)
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$main_form = New-Object System.Windows.Forms.Form
$main_form.Text = "Testing"
$main_form.Width = 500
$main_form.height = 300
$main_form.FormBorderStyle = "FixedDialog"
$main_form.AutoSize = $true
$main_form.MaximizeBox = $false
$main_form.MinimizeBox = $false
#
$SetCheckBox = New-Object System.Windows.Forms.Checkbox
$SetCheckBox.Location = New-Object System.Drawing.Point(10,10)
$SetCheckBox.Size = New-Object System.Drawing.Size(60,20)
$SetCheckBox.Text = "Set"
$main_form.Controls.Add($SetCheckBox)
if($SetCheckBox.Checked -eq $true){
$SetButton = New-Object System.Windows.Forms.Button
$SetButton.Location = New-Object System.Drawing.Point(280,200)
$SetButton.Size = New-Object System.Drawing.Size(100,20)
$SetButton.Text = "Nothing Selected"
$SetButton.AutoSize = $true
$main_form.Controls.Add($SetButton)
}else{
}
$RefreshButton = New-Object System.Windows.Forms.Button
$RefreshButton.Location = New-Object System.Drawing.Point(400,285)
$RefreshButton.Size = New-Object System.Drawing.Size(100,20)
$RefreshButton.Text = "Refresh"
$RefreshButton.AutoSize = $true
$main_form.Controls.Add($RefreshButton)
$RefreshButton.Add_Click({
$main_form.Refresh()
})
#
$main_form.Topmost = $true
$main_form.ShowDialog()
I expect it to add a button to my form when "$SetCheckBox.Checked" equals to $true", but nothing happens. No error code or anything. Maybe this isn't how Powershell works?
Upvotes: 2
Views: 125
Reputation: 2405
The problem is that you have everything setup, just not in the right place. You need to include the if statement inside the button press for it to be actioned. I didn't need to put a Refresh()
in but I only tested in the ISE. This is currently working for me:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$main_form = New-Object System.Windows.Forms.Form
$main_form.Text = "Testing"
$main_form.Width = 500
$main_form.height = 300
$main_form.FormBorderStyle = "FixedDialog"
$main_form.AutoSize = $true
$main_form.MaximizeBox = $false
$main_form.MinimizeBox = $false
$SetCheckBox = New-Object System.Windows.Forms.Checkbox
$SetCheckBox.Location = New-Object System.Drawing.Point(10,10)
$SetCheckBox.Size = New-Object System.Drawing.Size(60,20)
$SetCheckBox.Text = "Set"
$main_form.Controls.Add($SetCheckBox)
$RefreshButton = New-Object System.Windows.Forms.Button
$RefreshButton.Location = New-Object System.Drawing.Point(400,285)
$RefreshButton.Size = New-Object System.Drawing.Size(100,20)
$RefreshButton.Text = "Refresh"
$RefreshButton.AutoSize = $true
$main_form.Controls.Add($RefreshButton)
$RefreshButton.Add_Click({
if($SetCheckBox.Checked -eq $true){
Write-Host "testing"
$SetButton = New-Object System.Windows.Forms.Button
$SetButton.Location = New-Object System.Drawing.Point(280,200)
$SetButton.Size = New-Object System.Drawing.Size(100,20)
$SetButton.Text = "Nothing Selected"
$SetButton.AutoSize = $true
$main_form.Controls.Add($SetButton)
}else{
Write-Host "testing2"
}
})
$main_form.Topmost = $true
$main_form.ShowDialog()
Upvotes: 2