我正在尝试使用GUI创建一个工具,该工具由许多复选框、上下和组合框窗体控件组成,这些控件允许用户:
我很难获得在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在单击"Add“按钮时是否实际保存了我创建的对象。
控制台的输出示例:
Data is:
@{Name=; Cpu=1; Ram=1023; AddDiskSize=0; OS=Operating System; VLANName=VLAN-99}在随后单击“添加”按钮时,在窗体控件中选择不同值的...and:
@{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编写了一些通用脚本。
谢谢
发布于 2018-02-23 18:12:03
我必须完成并工作,所以尽管可能不是最简单、最简单或最有效的,但我决定按每一个按钮将对象的各个属性添加到datagridview中的适当列中,而我也必须事先定义这些属性。例如:
在“数据”定义中:
$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)然后,每次按下按钮时,窗体控件中当前选定的值将按下每按钮一行。
也许不是最干净的,但我把这个答案留在这里,以防有人处于类似的情况下,需要让一些东西更早地发挥作用,而不是更晚。
https://stackoverflow.com/questions/48924622
复制相似问题