我正在尝试向powershell中的表单添加进度条.我不想使用PowerShell的Write-Progress cmdlet(因为当我从命令行运行脚本时,它显示了一个基于文本的进度条,我总是想要一个基于表单/图形的栏).
我试过这个似乎工作(在网上找到):
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
$form_main = New-Object System.Windows.Forms.Form
$progressBar1 = New-Object System.Windows.Forms.ProgressBar
$timer1 = New-Object System.Windows.Forms.Timer
$timer1_OnTick = {
$progressBar1.PerformStep()
}
$form_main.Text = 'ProgressBar demo'
$progressBar1.DataBindings.DefaultDataSourceUpdateMode = 0
$progressBar1.Step = 1
$progressBar1.Name = 'progressBar1'
$form_main.Controls.Add($progressBar1)
$timer1.Interval = 100
$timer1.add_tick($timer1_OnTick)
$timer1.Start()
$form_main.ShowDialog()| Out-Null
Run Code Online (Sandbox Code Playgroud)
但是,我不希望事件更新进度条(如上例中的$ timer1_OnTic)我想通过在整个脚本中调用来自行更新它,例如:
$progressBar1.PerformStep()
Run Code Online (Sandbox Code Playgroud)
要么
$progressBar1.Value = 10
Run Code Online (Sandbox Code Playgroud)
因此,似乎我需要某种后台工作程序,只要我调用PerformStep()或更改progressBar的值,就会更新进度条
调用ShowDialog会停止脚本内的所有处理,直到表单关闭.
如果我理解正确,您应该能够将ShowDialog()更改为Show(),这将显示Dialog而不会阻止您的脚本.然后,您可以继续执行并更新进度条.
您可能会对表单缺乏交互性感到失望.
| 归档时间: |
|
| 查看次数: |
18113 次 |
| 最近记录: |