0

パワーシェルでフォームスクリプトを作成しています。フォームには、値を動的に入力するリスト ビュー コントロールがほとんどありません。「データのエクスポート」と「データの更新」という値を持つ単一のコンテキスト メニューを作成し、それをすべてのリスト ビュー コントロールにアタッチしました。リストビューコントロールのいずれかを右クリックすると、コンテキストメニューが正常に表示されます。メニューをクリックしたときに、特定のリスト ビュー コントロールのデータをエクスポート/更新する必要があります。リストビューコントロールでデータをエクスポートしてデータを更新する機能があります。

私の質問は、クリックしたリストビュー名を取得するにはどうすればよいですか? その特定のリストビューに関連付けられた機能を実行できるようにします。

これがコードです。

$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 に答える