Powershell datagridview单元格单击事件

Powershell datagridview单元格单击事件,powershell,powershell-2.0,powershell-3.0,powershell-ise,Powershell,Powershell 2.0,Powershell 3.0,Powershell Ise,我在使用datagridview的脚本中有一个powershell脚本。 我的剧本写得很好。我觉得一切都很好 我的问题是我想得到所选行的第一列值。要实现这一点,我需要添加事件(单元格单击/单元格内容单击/单元格鼠标单击)。我想不出来。如何添加事件 有人能给我一些建议吗 $datagridview1_CellMouseClick = [System.Windows.Forms.DataGridViewCellEventHandler]{ write-host $_.RowIndex # Thi

我在使用datagridview的脚本中有一个powershell脚本。 我的剧本写得很好。我觉得一切都很好

我的问题是我想得到所选行的第一列值。要实现这一点,我需要添加事件(单元格单击/单元格内容单击/单元格鼠标单击)。我想不出来。如何添加事件

有人能给我一些建议吗

 $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}
请注意,您必须决定变量的作用域以及函数如何与datagrid交互。如果您在脚本级别声明datagrid,那么您应该能够在函数中按名称引用它。此函数将按照问题中列出的确切顺序执行您所说的操作。根据口味编辑

声明datagrid后,可以添加click事件,如下所示:

$myGrid.Add_CellMouseClick({gridClick})
请注意,我们创建的函数的名称放在括号内

一些重要的注意事项:

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

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

      这里有许多可能的事件可以处理。它们之间的差异是微妙的,所以我将把它留给你,看看是否有一个活动,将更好地为您的目的工作。对于我的回答,我将坚持你提到的事件: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交互。如果您在脚本级别声明datagrid,那么您应该能够在函数中按名称引用它。此函数将按照问题中列出的确切顺序执行您所说的操作。根据口味编辑

      声明datagrid后,可以添加click事件,如下所示:

      $myGrid.Add_CellMouseClick({gridClick})
      
      请注意,我们创建的函数的名称放在括号内

      一些重要的注意事项:

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

      问题似乎很愚蠢。问题似乎很愚蠢。感谢您的回答和澄清。感谢您的回答和澄清。