从上下文菜单中获取当前控件名称

时间:2013-09-28 01:48:19

标签: powershell treeview contextmenu

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

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

这是代码。

$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函数中,我将根据控件名称执行代码。

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

1 个答案:

答案 0 :(得分:1)

在事件处理程序脚本块中,您可以访问$ this和$ _,它们引用事件的Sender和EventArgs。在MenuItem事件处理程序中,您可以像这样获取ListView名称:

$ctxRefreshDataMenuItem.Add_Click({Write-Host $this.Parent.SourceControl.Name})
相关问题