Динамическое создание объектов GUI Powershell
суть вопроса: пишу GUI форму на Powershell, которая будет вспомогательной программой в моей работе. Основная проблема, которую не могу решить - это создание кнопки с нужной пользовательской информацией.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName PresentationFramework
[int] $padding = 10
[int] $btnCount = 1
[int] $nameCount = 1
function MoveButton([Windows.Forms.Button] $btn) {
if ($Script:btnCount -eq 3) {
$btn.Left = $padding
$btn.Top = $btn.Top + $btn.Height + $padding
$Script:btnCount = 1
} else {
$btn.Left = $btn.Left + $btn.Size.Width + $padding
$btn.Top = $btn.Top
$Script:btnCount++
}
}
function NewBtn([int] $left, [int] $top) {
${'$btn_'+$nameCount} = New-Object System.Windows.Forms.Button
${'$btn_'+$nameCount}.Text = "$nameCount`n"
${'$btn_'+$nameCount}.Font = New-Object System.Drawing.Font('Franklin Gothic',8)
${'$btn_'+$nameCount}.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
${'$btn_'+$nameCount}.FlatAppearance.BorderSize = 0
${'$btn_'+$nameCount}.ForeColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")
${'$btn_'+$nameCount}.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#515582")
${'$btn_'+$nameCount}.Size = New-Object System.Drawing.Size(90,90)
${'$btn_'+$nameCount}.Location = New-Object System.Drawing.Point($left,$top)
${'$btn_'+$nameCount}.Add_Click({Write-Warning ""})
$main_form.Controls.Add(${'$btn_'+$nameCount})
$Script:nameCount++
}
function Button_Click {
NewBtn -left $button.Left -top $button.Top
MoveButton $button
}
[System.Windows.Forms.Application]::EnableVisualStyles()
$main_form = New-Object System.Windows.Forms.Form
$main_form.Text ='RemoteDC • Specially designed for Auto-Alliance by Bykov '
$main_form.ClientSize='700,400'
$main_form.MaximizeBox= $false
$main_form.TopMost= $false
$main_form.AutoSize = $true
$main_form.FormBorderStyle = 'Fixed3D'
$button = New-Object System.Windows.Forms.Button
$button.Text = "Добавить`n"
$button.Font = New-Object System.Drawing.Font('Franklin Gothic',8)
$button.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
$button.FlatAppearance.BorderSize = 0
$button.ForeColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")
$button.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#515582")
$button.Size = New-Object System.Drawing.Size(90,90)
$button.Location = New-Object System.Drawing.Point($padding,150)
$button.Add_Click({Button_Click})
$main_form.Controls.Add($button)
$main_form.ShowDialog()
Есть такой код, он работает, то есть он создает кнопки и размещает их там где нужно относительно моей формы, но! есть 2 проблемы:
- после создания кнопки и перезагрузки формы, созданные кнопки пропадают
- по клику на кнопку "добавить", параллельно созданию новой кнопки, открывается форма (доп. скрипт) создающий файл с заполненными пользователем данными. Я не знаю, как привязать этот новый созданный файл к ново созданной кнопке? все имена создаваемых файлов носят порядковое имя: 1,2,3,4.... и т.д.
Если будут мысли, за любые, буду безгранично благодарен!