Solución: Utilizando correctamente el evento UserDeletingRow.
El evento UserDeletingRow se ejecuta después de que el usuario presionó la tecla Supr y antes de que la fila desaparezca completamente del grid.
Para mayor entendimiento, pongo un ejemplo.
Tengo un formulario llamado Form1, el cual contiene un grid llamado DataGridView1.
Lo siguiente es lo que va en el evento UserDeletingRow.
Private Sub DataGridView1_UserDeletingRow(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowCancelEventArgs) _ Handles DataGridView1.UserDeletingRow If Not e.Row.IsNewRow Then 'Se verifica que no sea una nueva fila Dim response As DialogResult = MessageBox.Show("¿Está seguro?", "¿Borrar fila?", MessageBoxButtons.YesNo, _ MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) If response = DialogResult.No Then e.Cancel = True End If End If End Sub