PowerShell-将文本添加到ProgressBar(GUI)

时间:2018-07-03 20:28:43

标签: powershell user-interface progress-bar

我正在尝试在进度栏(百分比等)上放置文本,但是它不起作用。进度栏文本基于this。下面是该代码的简化版本。

["My","text"]

我没有收到任何错误,但根本不显示文字。我想念什么?有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您不是应该在进度条上设置text属性

$progressBarText应该是$progressBar.Text

答案 1 :(得分:1)

出于某种原因,PowerShell中的那个对您不起作用吗?这是我每天使用多次的真实脚本的摘录。您也许可以根据需要进行调整。我意识到它不是GUI,而是100%PowerShell。

       try {
           "Your Secret" | clip
            1..$Delay | % {
                if (-not ( [console]::KeyAvailable) ) {
                    write-host "$($_)`r" -NoNewline
                    Write-Progress -Status "Press Any Key to continue" `
                        -Activity "Paste password before it is removed from the clipboard" `
                        -PercentComplete ($_ * 100 / $Delay)
                    Start-Sleep -Seconds 1
                }
            }
        } finally {
            $null | clip

            if ([console]::KeyAvailable) {
                $x = [console]::ReadKey()
                Write-Information -MessageData $x -Tags "KeyStroke"
            }
        }

(如何真正将安全密码输入剪贴板是阅读器的一项单独任务。)

答案 2 :(得分:0)

我是如何做到的,并且有效。

我将其放在脚本的开头,如下所示:

$Font = New-Object System.Drawing.Font('Arial', 10, 'Bold', 'Pixel')
$brush1 = New-Object Drawing.SolidBrush([System.Drawing.Color]::Black)
$PBCG = $ProgressBar1.CreateGraphics()

我做了一个像这样写的函数:

function UpdateText([String] $text){
    $x = ($ProgressBar1.Width / 2) - ([int]$PBCG.MeasureString($text, $Font).Width / 2)
    $y = ($ProgressBar1.Height / 2) - ([int]$PBCG.MeasureString($text, $Font).Height / 2)
    $PointF = [System.Drawing.PointF]::new($x, $y)
    $PBCG.DrawString($text, $Font, $brush1, $PointF)
}

我希望它对您有帮助