道歉,Google对此已经产生了很多答复,很遗憾,这些答复要么与C#相关,要么已经尝试了各种答案,对我不起作用(其中一些在下面的示例中)。
我一直感到ShowDialog()
的局限性。
我有一个脚本,该脚本执行 x ,将日志文件保留在 y 中,然后重新启动计算机。设备返回后,最终用户将再次运行该脚本,这时它将在 y 中查找日志文件,然后通过执行 z 。
它实际上完成了我需要做的事情,但是它安静地完成直到完成,然后向GUI展示我的文本框,并在其中填充我希望即时看到的输出。
在下面的示例中,第一次运行模拟作业 x ,此时关闭脚本并重新启动。 sleep 5
可以在后台演示挂起或加载。
$form = New-Object Windows.Forms.Form
$form.ClientSize = New-Object Drawing.Size(200, 200)
$label = New-Object System.Windows.Forms.Label
$label.Height = 50
$label.Width = 100
$label.Text = "hello world"
$button = New-Object System.Windows.Forms.Button
$button.Height = 30
$button.Width = 100
$button.Left = 60
$button.Top = 100
$button.Text = "press me"
$button.Add_Click({
$label.Text = "goodbye world"
"file created" | Out-File $env:temp\testform.txt -Force ascii
})
$form.Controls.Add($label)
$form.Controls.Add($button)
$form.Controls.Add($checkbox)
if ((Test-Path "$env:temp\testform.txt")) {
Sleep 5
$label.Text = "IF found the file"
"IF processes everything within before showing the dialog." |
Add-Content $env:temp\testform.txt
}
$form.Add_activated({
Sleep 5
$label.Text = "Activated found the file $i"
"activate keeps looping the same response every time the form has is clicked." |
Add-Content $env:temp\testform.txt
})
$form.Add_load({
Sleep 5
$label.Text = "Loaded found the file $i"
"Load processes everything within before showing the dialog." |
Add-Content $env:temp\testform.txt
})
$form.ShowDialog()