C#操作DataGridView設(shè)置單元格只讀
一、修改ReadOnly屬性
1、設(shè)置整個(gè)DataGridView只讀:
DataGridView.ReadOnly=true;
此時(shí)用戶的新增行和刪除行操作也被屏蔽了。
2、設(shè)置DataGridView內(nèi)某個(gè)單元格不可編輯,例如:設(shè)置第二行第一列的單元格不可編輯:
this.dgv_PropDemo[0, 1].ReadOnly = true;
3、設(shè)置DataGridVIew的某列整列不可編輯,例如:設(shè)置第二列不可編輯:
this.dgv_PropDemo.Columns[1].ReadOnly = true;
4、設(shè)置DataGridView的某行整行不可編輯,例如:設(shè)置第三行不可編輯:
this.dgv_PropDemo.Rows[2].ReadOnly = true;
二、使用EditMode屬性
EditMode屬性:獲取或設(shè)置一個(gè)值,該值指示如何開(kāi)始編輯單元格,屬性值是DataGridViewEditMode枚舉值之一。
成員名稱 | 說(shuō)明 |
EditOnEnter | 當(dāng)單元格接收到焦點(diǎn)時(shí)即可開(kāi)始編輯。在按 Tab 鍵在行中橫向輸入值,或按 Enter 鍵在列中縱向輸入值時(shí),此模式非常有用。 |
EditOnF2 | 當(dāng)單元格獲得焦點(diǎn)時(shí)按 F2 開(kāi)始編輯。此模式將選擇點(diǎn)放置在單元格內(nèi)容的末尾。 |
EditOnKeystroke | 當(dāng)單元格獲得焦點(diǎn)時(shí)按任意字母數(shù)字鍵開(kāi)始編輯。 |
EditOnKeystrokeOrF2 | 當(dāng)單元格獲得焦點(diǎn)時(shí)按任意字母數(shù)字鍵或 F2 開(kāi)始編輯。 默認(rèn)值 |
EditProgrammatically | 僅在調(diào)用 BeginEdit 方法時(shí)開(kāi)始編輯。 |
注:除了EditProgrammatically
之外,所有DataGridViewEditMode值都允許用戶通過(guò)雙擊單元格來(lái)開(kāi)始編輯該單元格。
當(dāng)DataGridView的EditMode屬性被設(shè)置為EditProgrammatically時(shí),用戶就不能手動(dòng)編輯單元格的內(nèi)容了。但是可以通過(guò)程序,調(diào)用DataGridView.BeginEdit方法,使單元格進(jìn)入編輯模式進(jìn)行編輯。
例如:
this.dgv_PropDemo.BeginEdit(true);
三、根據(jù)條件設(shè)定單元格的不可編輯狀態(tài)
當(dāng)一個(gè)一個(gè)的通過(guò)單元格坐標(biāo)設(shè)定單元格ReadOnly屬性的方法太麻煩的時(shí)候,你可以通過(guò)CellBeginEdit事件來(lái)取消單元格的編輯。
示例:
?private void dgv_PropDemo_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) ??????? { ??????????? DataGridView dgv = sender as DataGridView; ??????????? //當(dāng)前單元格的列名稱等于Sex并且當(dāng)前單元格的值等于“男”的時(shí)候取消編輯 ??????????? if (dgv.Columns[e.ColumnIndex].Name == "Sex" && dgv[e.ColumnIndex, e.RowIndex].Value.ToString().Trim() == "男") ??????????? { ??????????????? //取消編輯 ??????????????? e.Cancel = true; ??????????? } ??????? }
到此這篇關(guān)于C#操作DataGridView設(shè)置單元格只讀的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中LINQ to Objects查詢的實(shí)現(xiàn)
LINQ to Objects是LINQ技術(shù)在C#中的一種應(yīng)用,它專門(mén)用于對(duì)內(nèi)存中的對(duì)象集合進(jìn)行查詢和操作,本文就詳細(xì)的介紹C#中LINQ to Objects查詢的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08C#實(shí)現(xiàn)設(shè)置或屏蔽熱鍵的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)設(shè)置或屏蔽熱鍵,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12聚星C#數(shù)字信號(hào)處理工具包頻譜分析的用法
這篇文章主要介紹了聚星C#數(shù)字信號(hào)處理工具包頻譜分析的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02C#實(shí)現(xiàn)六大設(shè)計(jì)原則之接口隔離原則
這篇文章介紹了C#實(shí)現(xiàn)六大設(shè)計(jì)原則之接口隔離原則的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02C#實(shí)現(xiàn)幾十萬(wàn)級(jí)數(shù)據(jù)導(dǎo)出Excel及Excel各種操作實(shí)例
本篇文章主要介紹了C#實(shí)現(xiàn)幾十萬(wàn)級(jí)數(shù)據(jù)導(dǎo)出Excel及Excel各種操作實(shí)例,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-02-02C#確保只有一個(gè)實(shí)例在運(yùn)行的方法
這篇文章主要介紹了C#確保只有一個(gè)實(shí)例在運(yùn)行的方法,涉及C#進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05C#將HashTable中鍵列表或值列表復(fù)制到一維數(shù)組的方法
這篇文章主要介紹了C#將HashTable中鍵列表或值列表復(fù)制到一維數(shù)組中方法,涉及C#操作HashTable的相關(guān)技巧,需要的朋友可以參考下2015-04-04