调用ShowDialog()后继续执行代码

时间:2019-06-20 12:03:26

标签: winforms powershell

道歉,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()

0 个答案:

没有答案