0

У меня есть сценарий powershell в том скрипте, который я использую datagridview. Мой скрипт работает нормально. Все выглядит нормально для меня.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.

+0

Кажется, вопрос глуп. – Ironic

ответ

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. Если вы объявляете datagrid на уровне скрипта, вы должны иметь возможность просто ссылаться на него по имени внутри функции. Эта функция будет делать то, что вы сказали, в точном порядке, указанном в вашем вопросе. Отредактируйте вкус.

Вы можете добавить событие щелчка, после объявления вашего DataGrid, как это:

$myGrid.Add_CellMouseClick({gridClick}) 

Обратите внимание, что имя функции мы создали помещается в скобках.

Несколько важных замечаний:

  • Есть много событий, чтобы работать с. Проверяя это, я попробовал selectChanged, click, cellclick, cellmouseclick, enterrow и другие события. Вы можете проверить их на различия в поведении.
  • В некоторых случаях выход может быть немного необычным. Например, событие CellMouseClick, похоже, отвечает на клики в заголовке. Поэтому, если я нажимаю на ячейку в индексе строки 1 и индекс столбца 1 (второй столбец второй строки), скрипт будет отображать содержимое соответствующим образом. Если я затем нажму на заголовок столбца для первого столбца, скрипт снова запишет те же результаты (что имеет смысл, потому что выбранный индекс не изменился), что может показаться запутанным с первого взгляда.
  • Имейте в виду, что datagrids допускают множественный выбор, и я не знаю, как это может повлиять на выход. Это зависит от вас, чтобы понять.
+0

Спасибо за ваш ответ и разъяснение. – Ironic

Смежные вопросы