Почему этот фрагмент кода powershell не работает? - PullRequest
1 голос
/ 30 сентября 2019

Этот конкретный код PowerShell не работает для меня, мне интересно, что я здесь делаю неправильно (я нахожусь в процессе изучения Powershell - я довольно новичок в этом)

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()

Я ожидаю, что он добавит кнопку в мою форму, когда "$ SetCheckBox.Checked" равно $ true ", но ничего не происходит. Нет кода ошибки или чего-то еще. Может быть, это не так, как работает Powershell?

1 Ответ

1 голос
/ 30 сентября 2019

Проблема в том, что у вас все настроено, просто не в нужном месте. Вам нужно включить оператор if внутри кнопки, чтобы он действовал. Мне не нужно было вставлять Refresh(), но я тестировал только на ISE. В настоящее время это работает для меня:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...