Индикатор выполнения выделения оболочки питания не работает

#winforms #powershell

#winforms #powershell

Вопрос:

То, что я пытаюсь сделать, это создать окно с использованием форм и добавить индикатор выполнения в стиле маркера, который непрерывно зацикливается во время выполнения моего скрипта. Я не беспокоюсь об отслеживании прогресса, просто пользователь знает, что что-то происходит.

Вот что у меня есть до сих пор:

 Add-Type -AssemblyName System.Windows.Forms
$window = New-Object Windows.Forms.Form
$window.Size = New-Object Drawing.Size @(400,75)
$window.StartPosition = "CenterScreen"
$window.Font = New-Object System.Drawing.Font("Calibri",11,[System.Drawing.FontStyle]::Bold)
$window.Text = "STARTING UP"

$ProgressBar1 = New-Object System.Windows.Forms.ProgressBar
$ProgressBar1.Location = New-Object System.Drawing.Point(10, 10)
$ProgressBar1.Size = New-Object System.Drawing.Size(365, 20)
$ProgressBar1.Style = "Marquee"
$ProgressBar1.MarqueeAnimationSpeed = 20
$window.Controls.Add($ProgressBar1)

$window.ShowDialog()
  

При этом отображается индикатор выполнения и окно, но я не получаю анимацию выделения внутри индикатора выполнения.

Чего мне не хватает?

Комментарии:

1. Это работает для меня. Какую версию powershell вы используете?

2. Стиль выделения поддерживается только в Windows XP или Windows 2003 Server msdn.microsoft.com/en-us/library /…

3. Я использую powershell версии 2.0. Я на Windows 7. Какой другой тип стиля индикатора выполнения доступен, который я могу использовать для достижения того, что я пытаюсь?

4. Здесь перечислены допустимые параметры для Style атрибута. msdn.microsoft.com/en-us/library /…

Ответ №1:

Должны быть включены визуальные стили. Вот почему на ISE работает, но не на консоли.

 Add-Type -AssemblyName System.Windows.Forms

[System.Windows.Forms.Application]::EnableVisualStyles()

$window = New-Object Windows.Forms.Form
$window.Size = New-Object Drawing.Size @(400,75)
$window.StartPosition = "CenterScreen"
$window.Font = New-Object System.Drawing.Font("Calibri",11,[System.Drawing.FontStyle]::Bold)
$window.Text = "STARTING UP"

$ProgressBar1 = New-Object System.Windows.Forms.ProgressBar
$ProgressBar1.Location = New-Object System.Drawing.Point(10, 10)
$ProgressBar1.Size = New-Object System.Drawing.Size(365, 20)
$ProgressBar1.Style = "Marquee"
$ProgressBar1.MarqueeAnimationSpeed = 20
$window.Controls.Add($ProgressBar1)

$window.ShowDialog()
  

Комментарии:

1. СПАСИБО, СПАСИБО, Davidtgbe!! Последние три часа я искал, пытаясь выяснить, почему прокрутка маркера будет работать в ISE, но не при вызове из пакета. Я добавил ваш «EnableVisualStyles ()», и он работает на 100% правильно. Это помогло мне уложиться в установленный срок.