В примерах MSDN мы видим, что они делают это в c #, устанавливая e
как ссылку на текущее событие, а затем устанавливая e.Cancel
равным true, что позволяет нам отменить событие, как описано. здесь. Синтаксис выглядит следующим образом:
private void DataGridView1_UserDeletingRow(object sender,
DataGridViewRowCancelEventArgs e){
e.Cancel = true; //Cancel the event
}
Что ж, в PowerShell, если мы попытаемся добавить обработчик событий таким образом, мы получим ошибки, потому что методы обработчика событий, как правило, позволяют нам указать только одну перегрузку, которая является блоком сценария для запуска на событии.
Оказывается, к счастью, обманчиво легко ссылаться на текущее событие! Чтобы отменить удаление, просто добавьте это в свой add_UserDeletingRow()
скрипт-блок.
else
{
#stop the deletion
$PSItem.Cancel=$true
}
Вы также можете использовать синтаксис текущего элемента $_
, который будет выглядеть как
else
{
#stop the deletion
$_.Cancel=$true
}
Каждый раз, когда вы добавляете обработчик события и вам нужно обратиться к самому событию с помощью PowerShell (и таких событий много, посмотрите на все из них только для DataGridView
!) вы будете использовать $_
или $PSItem
. Так что в тех примерах из MSDN, если вы видите, что они ссылаются на текущее событие с e
или чем-то подобным, просто замените $_
или $PSItem
, и вы будете в порядке.