我正在尝试创建一个由GUI创建的工具,该工具由许多复选框,上/down和Combobox form Controls组成,允许用户:
- 选择每个形式控制的值
- 单击一个按钮以"添加"所有选定的值
- 将此对象添加到GUI底部的DataGridView 的底部
- 允许在"添加"按钮的每个后续按下每个后续按下的datagridview
我正在努力获取在DataGridView中显示的值,更不用说在添加新值时触发刷新。
这是一些示例代码:
function add_Button {
$obj = New-Object PSObject
Add-Member -InputObject $obj -MemberType NoteProperty -Name DeployOK $chosenDeployOK
Add-Member -InputObject $obj -MemberType NoteProperty -Name Name $chosenName
Add-Member -InputObject $obj -MemberType NoteProperty -Name Cpu $upDown_CPU.Value
Add-Member -InputObject $obj -MemberType NoteProperty -Name Ram $upDown_Memory.Value
Add-Member -InputObject $obj -MemberType NoteProperty -Name AddDiskSize $upDown_SecondDisk.Value
Add-Member -InputObject $obj -MemberType NoteProperty -Name OS $comboBox_OS.SelectedItem
Add-Member -InputObject $obj -MemberType NoteProperty -Name VLANName $comboBox_VLAN.SelectedItem
$global:Data += $obj
Write-Host "Data is:"
Write-Host $global:Data
$dataGridView.DataSource = $null
$dataGridView.DataSource = $global:Data
$dataGridView.Refresh
}
$global:Data = New-Object System.Collections.ArrayList
$button_Add = new-object System.Windows.Forms.Button
$button_Add.Location = "490,10"
$button_Add.Size = "80,20"
$button_Add.Text = "Add"
$button_Add.Add_Click({add_Button})
# Base form creation
$Form = New-Object System.Windows.Forms.Form
$Form.width = 1000
$Form.height = 600
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::Fixed3D
$Form.Text = "VM Planner"
$Form.maximumsize = New-Object System.Drawing.Size(1000,600)
$Form.startposition = "centerscreen"
$Form.KeyPreview = $True
$Form.Add_KeyDown({if ($_.KeyCode -eq "Enter") {}})
$Form.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$Form.Close()}})
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size= "950,150"
$dataGridView.Location = "10,400"
$form.Controls.Add($dataGridView)
行:
Write-Host "Data is:"
Write-Host $global:Data
仅用于调试目的,因此我可以检查$数据实际上保留了我单击"添加"按钮时创建的对象,而它确实如此。
从控制台输出的示例:
Data is:
@{Name=; Cpu=1; Ram=1023; AddDiskSize=0; OS=Operating System; VLANName=VLAN-99}
...以及随后单击的"添加"按钮,在表单控件中选择了不同的值:
@{Name=; Cpu=4; Ram=3071; AddDiskSize=0; OS=Operating System; VLANName=VLAN55; ManualIntervention=ManualIntervention} @{Name=; Cpu=6; Ram=3071; AddDiskSize=0; OS=Operating System; VLANName=VLAN-10}
有什么想法吗?我是使用Windows表单创建PowerShell Gui的新手,但是过去使用PowerShell进行了一些通用脚本。
谢谢
我必须完成此操作并正常工作,因此,尽管可能不是最简单,最简单或最有效的DataGridView中的列,我也必须事先定义。例如:
在datagrid definiton中:
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size= "950,150"
$dataGridView.Location = "10,400"
$dataGridView.AllowUserToAddRows = $false
$dataGridView.ColumnCount = 4
$dataGridView.Columns[1].Name = "Name"
$dataGridView.Columns[2].Name = "CPU"
$dataGridView.Columns[3].Name = "RAM"
$dataGridView.Columns[4].Name = "AddDiskSize"
在按钮函数中:
$dataGridView.Rows.Add(,$obj.Name,$obj.CPU,$obj.Ram,$obj.AddDiskSize)
然后每次按下按钮时,按按钮按按钮添加表单控件中的当前选择值。
可能不是最干净的,但是我在这里留下了这个答案,以防有人处于类似情况并且需要更早而不是晚些时候工作。