我試圖在PowerShell中添加進度條到窗體。我不想使用PowerShell的Write-Progress cmdlet(因爲當我從命令行運行腳本時,它顯示基於文本的進度條,並且我總是希望基於表單/圖形的欄)。Windows窗體中的Powershell進度條
我已經試過這一點,似乎工作(在網上找到):
[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
不過,我不想一個事件,更新進度條(如示例中做$ timer1_OnTic以上)我想在我的腳本撥打電話如來更新它自己:
$progressBar1.PerformStep()
或者
$progressBar1.Value = 10
因此,似乎我需要某種後臺工作人員,每當我調用PerformStep()或更改progressBar值時,都會更新進度欄。調用ShowDialog將停止腳本內的所有處理,直到窗體關閉爲止。
謝謝你,Show()方法做到了。非常感激。 – user577240 2011-04-14 00:24:53