Я создаю GUI с помощью foreach, Теперь ... могу сделать 16 кнопок, но пытаюсь немного автоматизировать сборку:
1,2,3,4 | foreach { $Button...}
все это работает, и я получаю 16 кнопок с правильными смещениями, но немного застряли, когда решили использовать задания внутри кнопок, пинги фонового задания, спящий режим, эхо-запросы - если не удается выполнить пинг, задание заканчивается, и на этом этапе я хочу, чтобы он изменил цвет кнопки
Поскольку все кнопки - "$ Button",
может ли каждая сгенерировать кнопку $ с другим номером в конце? ie $ Button1, $ Button2 ... и т. Д. c? попробовал $ Button $ _, но это не сработало
или какие-либо мысли о том, как ссылаться на кнопки, поэтому в зависимости от того, какое завершенное задание может изменить цвет этой кнопки?
Ура
@ Wasif_Hasan, это не сработало
$i=120
1..4 | Foreach {Set-Variable -Name "Button$($_)" -Value "Value"
$i=$i+70
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Point(150,$i)
$Button.Size = New-Object System.Drawing.Size(75,23)
$Button.Text = 'Cancel'+$_
$Button.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $Button
$form.Controls.Add($Button)
}
$Button3.Text = 'ok'+$_
Ошибка:
The property 'Text' cannot be found on this object. Verify that the property exists and can be set.
Код, который можно сохранить как .PS1 для проверки ...
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,400)
$form.StartPosition = 'CenterScreen'
$i=10
1..4 | Foreach {Set-Variable -Name "Button$($_)" -Value "Value"
$i=$i+50
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Point(150,$i)
$Button.Size = New-Object System.Drawing.Size(75,23)
$Button.Text = "Number"+$_
$form.Controls.Add($Button)
}
$Button3.Text = "Test"
$result = $form.ShowDialog()
Ошибка:
The property 'Text' cannot be found on this object. Verify that the property
exists and can be set.
At line:19 char:1
+ $Button3.Text = "Test"
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
Решение, спасибо Wasif_Hasan!
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Select a Computer'
$form.Size = New-Object System.Drawing.Size(300,400)
$form.StartPosition = 'CenterScreen'
$Button=1,2,3,4
$i=10
$k=1
1,2,3,4 | Foreach {
$i=$i+50
New-Variable "Button$_" -Value $(new-object System.Windows.Forms.Button -Property @{
Name = 'Dvar'
Location = New-Object System.Drawing.Size(10,$i)
Size = New-Object System.Drawing.Size(75,23)
Text = $_
})
$form.Controls.Add($(Get-Variable "Button$_" -ValueOnly))
$k=$k++
}
$Button2.Text="Hello"
$result = $form.ShowDialog()
$k=5
Remove-Variable Button*
$form.ActiveControl.Text
Результат: 1 Привет 2 3