C# DataGridView中指定的單元格不能編輯


C# DataGridView中指定的單元格不能編輯

 

ReadOnly屬性的使用

DataGridView內所有的單元格不能編輯

當DataGridView.ReadOnly屬性設定為True時, DataGridView內所有的單元格不能編輯。

但是使用這種方法可以對行進行刪除。而且最下面的一行被表示,但不能輸入。

[c-sharp]  view plaincopyprint?
 
  1. // DataGridView1的單元格只讀  
  2.  DataGridView1.ReadOnly = true;  

 

只有被指定的列、行、單元格不能編輯

只有被指定的列、行、單元格不能編輯時,通過設定DataGridViewColumn、DataGridViewRow、DataGridViewCell對象的ReadOnly屬性為True即可實現。

[c-sharp]  view plaincopyprint?
 
  1. //DataGridView1的第二列只讀  
  2. DataGridView1.Columns[1].ReadOnly = true;  
  3.   
  4. //DataGridView1的第三行只讀  
  5. DataGridView1.Rows[2].ReadOnly = true;  
  6.   
  7. //DataGridView1的(0, 0)的單元格只讀  
  8. DataGridView1[0, 0].ReadOnly = true;  

 

DataGridView的ReadOnly設定為True時,DataGridView內的所有行、列、單元格的ReadOnly會自動設定為True。同樣,列或行的ReadOnly設定為True時,所設定的列或行的所有的單元格的ReadOnly會自動設定為True。

EditMode屬性的使用

當DataGridView.EditMode屬性設定為DataGridViewEditMode.EditProgrammatically時,用戶就不能對單元格進行編輯。但是,在程序中DataGridView.BeginEdit對象觸發時,單元格變為可以進行編輯。

 

[c-sharp]  view plaincopyprint?
 
  1. //用戶不能編輯單元格  
  2.  DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;  

 

根據條件單元格不能編輯

這里所說的並不是每一個單元格的ReadOnly屬性設定,而是使用CellBeginEdit事件處理器致使單元格不能編輯。如下面代碼所示。

[c-sharp]  view plaincopyprint?
 
  1. //CellBeginEdit事件處理器  
  2. private void DataGridView1_CellBeginEdit(object sender,  
  3.     DataGridViewCellCancelEventArgs e)  
  4. {  
  5.     DataGridView dgv = (DataGridView)sender;  
  6.     //判斷是否可以編輯  
  7.     if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&  
  8.         !(bool)dgv["Column2", e.RowIndex].Value)  
  9.     {  
  10.         //編輯不能  
  11.         e.Cancel = true;  
  12.     }  
  13. }  
  14.    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM