1 无条件的限制行删除操作。
默认时, DataGridView 是允许用户进行行的删除操作的。如果设置 DataGridView 对象的 AllowUserToDeleteRows 属性为 False 时, 用户的行删除操作就被禁止了。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

[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 ;
    }
}