0

我在 power shell 中编写表单脚本。在表单中,我几乎没有列表视图控件,它们将动态填充值。我创建了一个带有“导出数据”和“刷新数据”值的上下文菜单,并将其附加到所有列表视图控件。当我右键单击任何列表视图控件时,上下文菜单显示正常。当我单击菜单时,我需要导出/刷新该特定列表视图控件中的数据。我具有导出数据和刷新列表视图控件中的数据的功能。

我的问题是,我怎样才能获得我点击的列表视图名称?这样我就可以执行与该特定列表视图相关的功能。

这是代码。

$ctxMenu = New-Object System.Windows.Forms.ContextMenu
$ctxExportDataMenuItem = New-Object System.Windows.Forms.MenuItem
$ctxExportDataMenuItem.Text = "Export To CSV"
$ctxRefreshDataMenuItem = New-Object System.Windows.Forms.MenuItem
$ctxRefreshDataMenuItem.Text = "Refresh"        
$ctxExportDataMenuItem.Add_Click({Export-ToCsv})
$ctxRefreshDataMenuItem.Add_Click({Refresh-ListView"})
$ctxMenu.MenuItems.AddRange(@($ctxExportDataMenuItem,$ctxRefreshDataMenuItem)) 

$sysSysEvtListView = New-Object System.Windows.Forms.ListView
$sysAppEvtListView = New-Object System.Windows.Forms.ListView 

$sysSysEvtListView.ContextMenu = $ctxMenu
$frmMain.Controls.Add($sysSysEvtListView) | Out-Null

$sysAppEvtListView.ContextMenu = $ctxMenu
$frmMain.Controls.Add($sysAppEvtListView) | Out-Null

单击任何列表视图时,我需要将该控件名称捕获到变量中。然后在 export-tocsv 函数中,我将根据控件名称执行代码。

感谢您在此查询中帮助我。:)

4

1 回答 1

1

在事件处理程序脚本块中,您可以访问引用事件的 Sender 和 EventArgs 的 $this 和 $_。在 MenuItem 事件处理程序中,您可以获得 ListView 名称,如下所示:

$ctxRefreshDataMenuItem.Add_Click({Write-Host $this.Parent.SourceControl.Name})
于 2013-09-28T14:53:01.963 回答