Finalmente no he necesitado que se borren todas las líneas, he decidido que el usuario vaya borrando una a una. Mi solución ha sido esta utilizando el evento UserDeletingRow:
Código:
Private Sub DataGridView3_UserDeletingRow(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewRowCancelEventArgs) Handles DataGridView3.UserDeletingRow
Try
Dim matricula As String = e.Row.Cells("Matricula").Value.ToString
'preguntamos si realmente se desea borrar, ya que el usuario puede haber oprimido la tecla SUPR por equivocación
Dim respuesta As Integer
respuesta = MessageBox.Show("Deseas borrar la línea para la matrícula " & matricula, "Borrar Línea", _
MessageBoxButtons.YesNo, _
MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2)
If respuesta = Windows.Forms.DialogResult.Yes Then
'For Each row As DataGridViewRow In DataGridView3.SelectedRows
' DataGridView1.Rows.Remove(row)
'Next
DataGridView1.Rows.Remove(e.Row)
'si se desea borrar de base de datos esa matrícula, borrarla y recargar el 'gridview para ver los cambios
Else
e.Cancel = True
End If
Catch ex As Exception
End Try
End Sub
Muchas gracias por las respuestas rockbass2560 y drako_darpan me han aclarado ideas. Espero que a alguien más le sirva este código. Un saludo.