Powershell datagridview 单元格点击事件

Powershell datagridview cell click event

我在该脚本中有一个 powershell 脚本,我正在使用 datagridview。 我的脚本工作正常。我觉得一切正常。

我的问题是我想获取所选行的第一列值。为此,我需要添加事件(单元格 click/cell 内容 click/cell 鼠标单击)。我无法弄清楚。如何添加活动。

有人可以就此提出建议吗?

 $datagridview1_CellMouseClick = [System.Windows.Forms.DataGridViewCellEventHandler]{

write-host $_.RowIndex # This displays the row number selected
write-host $_.ColumnIndex # This displays the column number selected
write-host $datagridview1.Rows[$_.RowIndex].Cells[0].value # This would display the value of the first cell in the selected row
write-host $datagridview1.Rows[$_.RowIndex].Cells[$_.ColumnIndex].value # This would display the value of the cell selected
}

有很多适用于 C# 的示例,但没有找到任何适用于 powershell 的示例。

根本不是一个愚蠢的问题,但有点令人困惑。你说你想要所选行的第一列值,但是根据你正在寻找的输出,你似乎对所选单元格更感兴趣。我在回答时假设选择的单元格就是您要查找的内容。

这里有许多可能的事件可以处理。它们之间的区别很微妙,所以我会留给您看看是否有一个活动更适合您的目的。对于我的回答,我将坚持您提到的事件:CellMouseClick。

我首先创建点击发生时要执行的函数。

function gridClick(){
$rowIndex = $myGrid.CurrentRow.Index
$columnIndex = $myGrid.CurrentCell.ColumnIndex
Write-Host $rowIndex
Write-Host $columnIndex 
Write-Host $myGrid.Rows[$rowIndex].Cells[0].value
Write-Host $myGrid.Rows[$rowIndex].Cells[$columnIndex].value}

请注意,您必须决定变量的作用域以及函数与数据网格的交互方式。如果您在脚本级别声明数据网格,那么您应该能够在函数内通过名称引用它。此功能将按照您的问题中列出的确切顺序执行您所说的。编辑口味。

您可以在声明数据网格后添加点击事件,如下所示:

$myGrid.Add_CellMouseClick({gridClick})

请注意,我们创建的函数的名称放在括号内。

一些重要说明:

  • 有许多事件需要处理。在对此进行测试时,我尝试了 selectionChanged、click、cellclick、cellmouseclick、enterrow 和其他事件。您可能需要检查这些行为差异。
  • 在某些情况下输出可能有点不正常。例如,CellMouseClick 事件似乎响应 header 中的点击。因此,如果我单击行索引 1 和列索引 1(第二行第二列)处的单元格,脚本将适当地显示内容。如果我然后单击第一列的列标题,脚本将再次写入相同的结果(这是有道理的,因为所选索引没有更改)乍一看似乎令人困惑。
  • 请记住,数据网格允许进行多项选择,我不知道这会对输出产生怎样的影响。就看你自己了。