Powershell datagridview单元格单击事件

时间:2015-07-08 05:52:48

标签: powershell powershell-v2.0 powershell-v3.0 powershell-ise

我在该脚本中有一个powershell脚本,我正在使用datagridview。 我的脚本工作正常。一切看起来都不错。

我的问题是我想获取所选行的第一列值。为了实现这一点,我需要添加事件(单击单击/单元格单击/单击鼠标单击)。我无法理解。如何添加活动。

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

 $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找到任何东西。

1 个答案:

答案 0 :(得分:2)

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

这里可以使用许多可能的事件。它们之间的差异是微妙的,所以我会留给你看看是否有一个更适合你的目的的事件。对于我的回答,我会坚持你提到的事件: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}

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

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

$myGrid.Add_CellMouseClick({gridClick})

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

一些重要的注意事项:

  • 有许多活动可供使用。在测试时,我尝试了selectionChanged,click,cellclick,cellmouseclick,enterrow和其他事件。您可能希望检查这些行为的差异。
  • 在某些情况下,输出可能有点不寻常。例如,CellMouseClick事件似乎响应标头中的点击。因此,如果我单击行索引1和列索引1(第二行第二列)的单元格,脚本将适当地显示内容。如果我然后单击第一列的列标题,脚本将再次写入相同的结果(这是有道理的,因为所选索引没有更改),这看起来可能会让人感到困惑。
  • 请记住,datagrids允许多个选择,我不知道这可能会如何影响输出。这取决于你要弄明白。