Winforms Windows窗体-单击按钮将数据添加到列表视图

Winforms Windows窗体-单击按钮将数据添加到列表视图,winforms,powershell,Winforms,Powershell,我有一个winform应用程序,它在我单击$button\u updates后填充一些数据,如何添加存储在变量中的数据,该变量在我单击该按钮后可用 列表视图中需要的数据存储在一个名为$results $button_UpdateTS = New-Object System.Windows.Forms.Button $button_UpdateTS.Location = New-Object System.Drawing.Size(15, 954) $button_UpdateTS.Size =

我有一个winform应用程序,它在我单击
$button\u updates
后填充一些数据,如何添加存储在变量中的数据,该变量在我单击该按钮后可用

列表视图中需要的数据存储在一个名为
$results

$button_UpdateTS = New-Object System.Windows.Forms.Button
$button_UpdateTS.Location = New-Object System.Drawing.Size(15, 954)
$button_UpdateTS.Size = New-Object System.Drawing.Size(320, 32)
$button_UpdateTS.TextAlign = "MiddleCenter"
$button_UpdateTS.Text = “Update Tasksequence”
$button_UpdateTS.Add_Click( { $Results = Set-DynamicVariables 
-Manufacturer "$($listview_Vendor.SelectedItems)" 
-TSPackageID "$($ListView_Tasksequences.SelectedItems.SubItems[1].Text)" -WhatIf })
    $Form.Controls.Add($button_UpdateTS)
这给了我:

$Results = 
SKUNotExistsDriverName    : XPS Notebook 9560
SKUNotExistsDriverID      : PS10053F
SKUNotExistsDriverSKU     : 07BE
SKUNotExistsDriverVersion : A12
SKUNotExistsBIOSName      : XPS Notebook 9560
SKUNotExistsBIOSID        : PS10053E
SKUNotExistsBIOSSKU       : 07BE
SKUNotExistsBIOSVersion   : 1.15.0
这是我希望存储在其中的列表:

$Global:listview_NotExists_SKU = New-Object System.Windows.Forms.ListView
$listview_NotExists_SKU.Location = New-Object System.Drawing.Size(515, 670)
$listview_NotExists_SKU.Size = New-Object System.Drawing.Size(486, 235)
$listview_NotExists_SKU.View = "Details"
$listview_NotExists_SKU.FullRowSelect = $true
$listview_NotExists_SKU.MultiSelect = $true
$listview_NotExists_SKU.Sorting = "None"
$listview_NotExists_SKU.AllowColumnReorder = $true
$listview_NotExists_SKU.GridLines = $true
$listview_NotExists_SKU.Add_ColumnClick( { SortListView $this $_.Column })
$Form.Controls.Add($listview_NotExists_SKU)
我尝试使用此功能,但不起作用:

Function Get-Results {
        ForEach ($Result in $Results) {
            $listview_NotExists_SKU.Items.Add($Result) 
       }
}

$Form.Add_Shown( { $Form.Load; Get-results })

因为在调用方的子作用域中运行添加了例如
.Add_Click()
的事件处理脚本块,并在那里分配给变量
$Results
$Results=…
创建一个作用域局部变量,在其中设置事件处理程序的作用域和随后调用的事件处理程序都看不到该变量

要在脚本作用域中创建变量(随后调用的事件处理程序也可以看到该变量),请使用
$script:
作用域说明符:

$button_UpdateTS.Add_Click( { $script:Results = ... } )
注意:如果设置事件处理程序的作用域不是脚本作用域(例如,如果代码在函数中),并且您希望从事件处理程序中更一般地引用该作用域,请使用
set Variable-scope 1-Name Results-Value…
,它以相应的父作用域为目标。[1]



[1] 有关PowerShell中作用域的详细信息,请参阅。

的底部部分,因为添加了事件处理脚本块,例如
。Add_Click()
在调用方的子作用域中运行,并在那里分配变量
$Results
$Results=…
创建一个作用域局部变量,在其中设置事件处理程序的作用域和随后调用的事件处理程序都看不到该变量

要在脚本作用域中创建变量(随后调用的事件处理程序也可以看到该变量),请使用
$script:
作用域说明符:

$button_UpdateTS.Add_Click( { $script:Results = ... } )
注意:如果设置事件处理程序的作用域不是脚本作用域(例如,如果代码在函数中),并且您希望从事件处理程序中更一般地引用该作用域,请使用
set Variable-scope 1-Name Results-Value…
,它以相应的父作用域为目标。[1]


[1] 有关PowerShell中作用域的更多信息,请参阅的底部部分