POWERSHELL:在按钮单击时添加并刷新DataGridView



我正在尝试创建一个由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)

然后每次按下按钮时,按按钮按按钮添加表单控件中的当前选择值。

可能不是最干净的,但是我在这里留下了这个答案,以防有人处于类似情况并且需要更早而不是晚些时候工作。

最新更新