PowerShell Form,如何刷新Label?

PowerShell Form, how to refresh Label?

我正在玩弄表格,但在标签中刷新信息时遇到了困难。

尝试刷新 Label 或 The Form 本身无效。 我写的测试代码:

CLS

Add-Type -assembly System.Windows.Forms
$Counter = 1

$Main_Form = New-Object System.Windows.Forms.Form
$Main_Form.Icon = $objIcon
$Main_Form.Text ='Test Test Test'
$Main_Form.Size = '1000,400'
$Main_Form.StartPosition = "CenterScreen"
$Main_Form.AutoSize = $true
$Main_Form.BringToFront()
Test

Function Test {
$Label = New-Object System.Windows.Forms.label
$Label.Location = '10,20'
$Label.Size = '200,60'
$Label.Font = New-Object System.Drawing.Font("Times New Roman",16,[System.Drawing.FontStyle]::Bold)
$Label.BackColor = "Transparent"
$Label.ForeColor = "Blue"
$Label.Text = 'Counter '+$Counter
$Main_Form.Controls.Add($Label)

$Button = New-Object System.Windows.Forms.Button
$Button.Location = '50,200'
$Button.Size = '200,75'
$Button.Font = New-Object System.Drawing.Font("Arial",16,[System.Drawing.FontStyle]::Bold)
$Button.Text = 'Next'
$Main_form.Controls.Add($Button)
$ButtonClickEvent = ({Write-Host 'Test '$Counter;$Global:Counter++})
$Button.Add_Click($ButtonClickEvent)
}

$Main_Form.ShowDialog()

当 运行 代码时,window 打开并显示计数器 1。按下 "Next" 按钮,我希望计数器更改为数字 2。

出于测试目的,我编写了测试 1,每次都添加“+1”,当按下 Next 时接缝开始工作。

我做错了什么?

非常感谢您的帮助,

麦克

不确定你为什么在那里有一个测试函数,但这将完成你所追求的。

您需要将 $Label.Text 添加到 $ButtonClickEvent

Add-Type -assembly System.Windows.Forms
$Script:Counter = 1

$Main_Form = New-Object System.Windows.Forms.Form
$Main_Form.Icon = $objIcon
$Main_Form.Text ='Test Test Test'
$Main_Form.Size = '1000,400'
$Main_Form.StartPosition = "CenterScreen"
$Main_Form.AutoSize = $true
$Main_Form.BringToFront()

$Label = New-Object System.Windows.Forms.label
$Label.Location = '10,20'
$Label.Size = '200,60'
$Label.Font = New-Object System.Drawing.Font("Times New Roman",16,[System.Drawing.FontStyle]::Bold)
$Label.BackColor = "Transparent"
$Label.ForeColor = "Blue"
$Label.Text = 'Counter '+$Script:Counter
$Main_Form.Controls.Add($Label)

$Button = New-Object System.Windows.Forms.Button
$Button.Location = '50,200'
$Button.Size = '200,75'
$Button.Font = New-Object System.Drawing.Font("Arial",16,[System.Drawing.FontStyle]::Bold)
$Button.Text = 'Next'
$Main_form.Controls.Add($Button)
$ButtonClickEvent = {
    Write-Host 'Test '$Script:Counter
    $Script:Counter++
    $Label.Text = "Counter $Script:Counter"
}
$Button.Add_Click($ButtonClickEvent)

$Main_Form.ShowDialog()