1 无条件的限制行删除操作。
默认时,DataGridView 是允许用户进行行的删除操作的。如果设置 DataGridView对象的AllowUserToDeleteRows属性为 False 时, 用户的行删除操作就被禁止了。
[VB.NET]
' 禁止DataGridView1的行删除操作。
DataGridView1.AllowUserToDeleteRows = False
 
[C#]
// 禁止DataGridView1的行删除操作。
DataGridView1.AllowUserToDeleteRows = false;

但是,通过 DataGridViewRowCollection.Remove 还是可以进行行的删除。
补足: 如果 DataGridView 绑定的是 DataView 的话,通过 DataView.AllowDelete 也可以控制行的删除。

2
行删除时的条件判断处理。
用户在删除行的时候,将会引发 DataGridView.UserDeletingRow 事件。 在这个事件里,可以判断条件并取消删除操作。
[VB.NET]
' DataGridView1 UserDeletingRow 事件
Private Sub DataGridView1_UserDeletingRow(ByVal sender As Object, _
        
ByVal e As DataGridViewRowCancelEventArgs) _
        
Handles DataGridView1.UserDeletingRow
    
删除前的用户确认。
    If MessageBox.Show("确认要删除该行数据吗?", "删除确认", _
        MessageBoxButtons.OKCancel, MessageBoxIcon.Question) <> _
            Windows.Forms.DialogResult.OK 
Then
       
如果不是 OK,则取消。
        e.Cancel = 
True
    
End If
End Sub
 
[C#]
// DataGridView1 UserDeletingRow 事件
private void DataGridView1_UserDeletingRow(
    
object sender, DataGridViewRowCancelEventArgs e)
{
    
// 删除前的用户确认。
    if (MessageBox.Show("确认要删除该行数据吗?", "删除确认",
        MessageBoxButtons.OKCancel,
        MessageBoxIcon.Question) != DialogResult.OK)
    {
       
// 如果不是 OK,则取消。
        e.Cancel = true;
    }
}