You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell实现带计时器的自动启动进度条问题求助

实现自动启动的PowerShell进度条

要让进度条在表单显示后自动启动,无需点击按钮,同时保证进度条在设定时间内平稳达到100%,可以通过以下修改实现:

修改后的完整脚本

# 进度条更新函数
Function UpdateProgressBar {
    if ($script:currentProgress -le 100) {
        $pbrTest.Value = $script:currentProgress
        $script:currentProgress += $progressIncrement
    }
    else {
        $timer.Enabled = $false
    }
}

# 创建表单
$Form = New-Object System.Windows.Forms.Form
$Form.Width = 400
$Form.Height = 200
$Form.Text = "Add Resource"

# 初始化进度条
$pbrTest = New-Object System.Windows.Forms.ProgressBar
$pbrTest.Maximum = 100
$pbrTest.Minimum = 0
$pbrTest.Location = New-Object System.Drawing.Size(10, 10)
$pbrTest.Size = New-Object System.Drawing.Size(360, 30) # 加宽进度条更直观
$script:currentProgress = 0
$Form.Controls.Add($pbrTest)

# 配置定时器:设定总时长(秒)和间隔(毫秒)
$totalDuration = 10 # 进度条从0到100%的总时间,单位:秒
$timerInterval = 100 # 定时器触发间隔,单位:毫秒
$progressIncrement = 100 / ($totalDuration * (1000 / $timerInterval)) # 每次tick的进度增量

$timer = New-Object System.Windows.Forms.Timer
$timer.Interval = $timerInterval
$timer.add_Tick({ UpdateProgressBar })

# 表单显示时自动启动定时器
$Form.Add_Shown({
    $Form.Activate()
    $timer.Start() # 显示表单后立即启动进度更新
})

# 显示表单
$Form.ShowDialog()

关键修改说明

  • 移除按钮依赖:删除原脚本中按钮及点击事件代码,不再需要手动触发
  • 进度逻辑优化:通过totalDuration设置进度条完成的总时间,自动计算每次定时器触发的进度增量,确保平稳推进到100%
  • 自动启动触发:在Form.Add_Shown事件中启动定时器,表单一显示就开始更新进度条
  • 修正原函数局限:原函数仅更新到5,现在改为更新到100,满足需求

内容的提问来源于stack exchange,提问作者Ken Robertson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:26:28