一、無條件的刪除行
默認時,DataGridView是允許用戶進行行的刪除操作,選中要刪除的行,按Delete鍵可以刪除,該操作沒有任何提示(只是刪除界面顯示的數據,不會真實刪除數據庫中的數據)。如果設置DataGridView對象的AllowUserToDeleteRows屬性為False,用戶將被禁止刪除行。
示例:禁止DataGridView刪除行
1 this.dgv_PropDemo.AllowUserToDeleteRows = false;
但是,通過行的Remove或者RemoveAt還是可以刪除行的。
示例:
1 //刪除選中的第一行 2 this.dgv_PropDemo.Rows.Remove(this.dgv_PropDemo.SelectedRows[0]);
如果DataGridView綁定的是DataView的話,通過DataView.AllowDelete也可以控制行的刪除。
二、刪除行時的條件判斷
用戶在刪除行的時候,將會引發DataGridView.UserDeletingRow事件。在這個事件里,可以判斷條件並取消刪除操作。(需要將AllowUserToDeleteRows設置為true,並且是使用鍵盤的delete鍵時才會觸發該事件)。
UserDeletingRow:行被刪除時觸發。
UserDeletedRow:行被刪除以后觸發。執行順序:先執行UserDeletingRow事件后執行UserDeletedRow事件。
示例:
1 private void dgv_PropDemo_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) 2 { 3 //刪除前確認 4 if (MessageBox.Show("確認要刪除選中的行嗎?", "刪除確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) 5 { 6 //如果不是Ok,則刪除 7 e.Cancel = true; 8 } 9 } 10 11 private void dgv_PropDemo_UserDeletedRow(object sender, DataGridViewRowEventArgs e) 12 { 13 MessageBox.Show("該行已被刪除"); 14 }
三、刪除選中的行
示例:
1 foreach (DataGridViewRow row in this.dgv_PropDemo.SelectedRows) 2 { 3 if (!row.IsNewRow) 4 { 5 this.dgv_PropDemo.Rows.Remove(row); 6 } 7 }