DataGridView不顯示最下面的新行、判斷新增行、刪除行操作
一、DataGridView不顯示下面的新行
通常DataGridView的最下面一行是用戶新追加的行(行頭顯示*)。如果不想讓用戶新追加行即不想顯示該新行,可以將DataGridView對象的AllowUserToAddRows屬性設(shè)置為False。
示例:
this.dgv_PropDemo.AllowUserToAddRows = false;
但是,可以通過程序給DataGridView追加新行:
this.dgv_Demo.Rows.Add();
注:只有DataGridView是非綁定模式時才可以這樣使用。
如果DataGridView的DataSource綁定的是DataView,還可以通過設(shè)置DataView.AllowAdd屬性為False來達(dá)到同樣的效果。
二、DataGridView判斷新增行
DataGridView的AllowUserToAddRows屬性為True時允許用戶追加新行,DataGridView的最后一行就是新追加的行。使用DataGridViewRow.IsNewRow屬性可以判斷哪一行是新追加的行。另外,通過DataGridView.NewRowIndex可以獲取新行的行序號。在沒有新行的時候,NewRowIndex=-1。
在保存數(shù)據(jù)到數(shù)據(jù)庫的時候,可以根據(jù)IsNewRow來判斷是不是新行,如果是新行,才進(jìn)行保存。
三、刪除行
1、無條件的刪除行
默認(rèn)時,DataGridView是允許用戶進(jìn)行行的刪除操作,選中要刪除的行,按Delete鍵可以刪除,該操作沒有任何提示(只是刪除界面顯示的數(shù)據(jù),不會真實刪除數(shù)據(jù)庫中的數(shù)據(jù))。如果設(shè)置DataGridView對象的AllowUserToDeleteRows屬性為False,用戶將被禁止刪除行。
示例:禁止DataGridView刪除行
this.dgv_PropDemo.AllowUserToDeleteRows = false;
但是,通過行的Remove或者RemoveAt還是可以刪除行的。
示例:
//刪除選中的第一行 this.dgv_PropDemo.Rows.Remove(this.dgv_PropDemo.SelectedRows[0]);
如果DataGridView綁定的是DataView的話,通過DataView.AllowDelete也可以控制行的刪除。
2、刪除行時的條件判斷
用戶在刪除行的時候,將會引發(fā)DataGridView.UserDeletingRow事件。在這個事件里,可以判斷條件并取消刪除操作。(需要將AllowUserToDeleteRows設(shè)置為true,并且是使用鍵盤的delete鍵時才會觸發(fā)該事件)。
UserDeletingRow:行被刪除時觸發(fā)。
UserDeletedRow:行被刪除以后觸發(fā)。執(zhí)行順序:先執(zhí)行UserDeletingRow事件后執(zhí)行UserDeletedRow事件。
示例:
private void dgv_PropDemo_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { //刪除前確認(rèn) if (MessageBox.Show("確認(rèn)要刪除選中的行嗎?", "刪除確認(rèn)", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { //如果不是Ok,則刪除 e.Cancel = true; } } private void dgv_PropDemo_UserDeletedRow(object sender, DataGridViewRowEventArgs e) { MessageBox.Show("該行已被刪除"); }
3、刪除選中的行
示例:
foreach (DataGridViewRow row in this.dgv_PropDemo.SelectedRows) { if (!row.IsNewRow) { this.dgv_PropDemo.Rows.Remove(row); } }
到此這篇關(guān)于DataGridView不顯示最下面的新行、判斷新增行、刪除行操作的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
WinForm中KeyDown,KeyPress和KeyUp的順序與區(qū)別解析
這篇文章主要介紹了WinForm中KeyDown,KeyPress和KeyUp的順序與區(qū)別解析,對C#初學(xué)者來說很有學(xué)習(xí)借鑒價值,需要的朋友可以參考下2014-08-08Ruby創(chuàng)建數(shù)組方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于Ruby創(chuàng)建數(shù)組方法的知識點內(nèi)容,對戲有興趣的朋友們學(xué)習(xí)下。2019-01-01詳解如何利用C#實現(xiàn)漢字轉(zhuǎn)拼音功能
這篇文章主要為大家詳細(xì)介紹了如何利用C#實現(xiàn)漢字轉(zhuǎn)拼音的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12C#實現(xiàn)TreeView節(jié)點拖拽的方法
這篇文章主要介紹了C#實現(xiàn)TreeView節(jié)點拖拽的方法,涉及C#針對TreeView節(jié)點的動態(tài)添加及移除技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09C# FileStream實現(xiàn)大文件復(fù)制
這篇文章主要為大家詳細(xì)介紹了C# FileStream實現(xiàn)大文件復(fù)制,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05C#實現(xiàn)網(wǎng)絡(luò)小程序的步驟詳解
經(jīng)常要檢測某些IP地址范圍段的計算機(jī)是否在線。有很多的方法,比如進(jìn)入到網(wǎng)關(guān)的交換機(jī)上去查詢、使用現(xiàn)成的工具或者編寫一個簡單的DOS腳本等等,這些都比較容易實現(xiàn)。本文將用C#來實現(xiàn),感興趣的可以了解一下2022-12-12