C#操作DataGridView設置單元格隻讀

一、修改ReadOnly屬性

1、設置整個DataGridView隻讀:

DataGridView.ReadOnly=true;

此時用戶的新增行和刪除行操作也被屏蔽瞭。

2、設置DataGridView內某個單元格不可編輯,例如:設置第二行第一列的單元格不可編輯:

this.dgv_PropDemo[0, 1].ReadOnly = true;

3、設置DataGridVIew的某列整列不可編輯,例如:設置第二列不可編輯:

this.dgv_PropDemo.Columns[1].ReadOnly = true;

4、設置DataGridView的某行整行不可編輯,例如:設置第三行不可編輯:

this.dgv_PropDemo.Rows[2].ReadOnly = true;

二、使用EditMode屬性

EditMode屬性:獲取或設置一個值,該值指示如何開始編輯單元格,屬性值是DataGridViewEditMode枚舉值之一。

成員名稱 說明
EditOnEnter 當單元格接收到焦點時即可開始編輯。在按 Tab 鍵在行中橫向輸入值,或按 Enter 鍵在列中縱向輸入值時,此模式非常有用。
EditOnF2 當單元格獲得焦點時按 F2 開始編輯。此模式將選擇點放置在單元格內容的末尾。
EditOnKeystroke 當單元格獲得焦點時按任意字母數字鍵開始編輯。
EditOnKeystrokeOrF2 當單元格獲得焦點時按任意字母數字鍵或 F2 開始編輯。 默認值
EditProgrammatically 僅在調用 BeginEdit 方法時開始編輯。  

註:除瞭EditProgrammatically之外,所有DataGridViewEditMode值都允許用戶通過雙擊單元格來開始編輯該單元格。

當DataGridView的EditMode屬性被設置為EditProgrammatically時,用戶就不能手動編輯單元格的內容瞭。但是可以通過程序,調用DataGridView.BeginEdit方法,使單元格進入編輯模式進行編輯。

例如:

this.dgv_PropDemo.BeginEdit(true);

三、根據條件設定單元格的不可編輯狀態

當一個一個的通過單元格坐標設定單元格ReadOnly屬性的方法太麻煩的時候,你可以通過CellBeginEdit事件來取消單元格的編輯。

示例:

 private void dgv_PropDemo_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            DataGridView dgv = sender as DataGridView;
            //當前單元格的列名稱等於Sex並且當前單元格的值等於“男”的時候取消編輯
            if (dgv.Columns[e.ColumnIndex].Name == "Sex" && dgv[e.ColumnIndex, e.RowIndex].Value.ToString().Trim() == "男")
            {
                //取消編輯
                e.Cancel = true;
            }
        }

到此這篇關於C#操作DataGridView設置單元格隻讀的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: