1
)
使用
ReadOnly
属性
⇒ 如果希望, DataGridView 内所有单元格都不可编辑, 那么只要:
⇒ 如果希望, DataGridView 内所有单元格都不可编辑, 那么只要:
[VB.NET]
' 设置 DataGridView1 为只读
DataGridView1.ReadOnly = True
' 设置 DataGridView1 为只读
DataGridView1.ReadOnly = True
[C#]
// 设置 DataGridView1 为只读
DataGridView1.ReadOnly = true ;
// 设置 DataGridView1 为只读
DataGridView1.ReadOnly = true ;
此时,用户的新增行操作和删除行操作也被屏蔽了。
⇒ 如果希望, DataGridView 内某个单元格不可编辑, 那么只要:
⇒ 如果希望, DataGridView 内某个单元格不可编辑, 那么只要:
[VB.NET]
' 设置 DataGridView1 的第 2 列整列单元格为只读
DataGridView1.Columns(1).ReadOnly = True
' 设置 DataGridView1 的第 3 行整行单元格为只读
DataGridView1.Rows(2).ReadOnly = True
' 设置 DataGridView1 的 [0 , 0] 单元格为只读
DataGridView1(0, 0).ReadOnly = True
' 设置 DataGridView1 的第 2 列整列单元格为只读
DataGridView1.Columns(1).ReadOnly = True
' 设置 DataGridView1 的第 3 行整行单元格为只读
DataGridView1.Rows(2).ReadOnly = True
' 设置 DataGridView1 的 [0 , 0] 单元格为只读
DataGridView1(0, 0).ReadOnly = True
[C#]
// 设置 DataGridView1 的第 2 列整列单元格为只读
DataGridView1.Columns[1].ReadOnly = true ;
// 设置 DataGridView1 的第 3 行整行单元格为只读
DataGridView1.Rows[2].ReadOnly = true ;
// 设置 DataGridView1 的 [0 , 0] 单元格为只读
DataGridView1[0, 0].ReadOnly = true ;
// 设置 DataGridView1 的第 2 列整列单元格为只读
DataGridView1.Columns[1].ReadOnly = true ;
// 设置 DataGridView1 的第 3 行整行单元格为只读
DataGridView1.Rows[2].ReadOnly = true ;
// 设置 DataGridView1 的 [0 , 0] 单元格为只读
DataGridView1[0, 0].ReadOnly = true ;
2 ) 使用 EditMode 属性
DataGridView.EditMode 属性被设置为 DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。但是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。
[VB.NET]
DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically
DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically
[C#]
DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
3 ) 根据条件设定单元格的不可编辑状态
当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的方法太麻烦的时候,你可以通过 CellBeginEdit 事件来取消单元格的编辑。
[VB.NET]
'CellBeginEdit 事件处理方法
Private Sub DataGridView1_CellBeginEdit( ByVal sender As Object , _
ByVal e As DataGridViewCellCancelEventArgs) _
Handles DataGridView1.CellBeginEdit
Dim dgv As DataGridView = CType (sender, DataGridView)
' 是否可以进行编辑的条件检查
If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _
Not CBool (dgv("Column2", e.RowIndex).Value) Then
' 取消编辑
e.Cancel = True
End If
End Sub
'CellBeginEdit 事件处理方法
Private Sub DataGridView1_CellBeginEdit( ByVal sender As Object , _
ByVal e As DataGridViewCellCancelEventArgs) _
Handles DataGridView1.CellBeginEdit
Dim dgv As DataGridView = CType (sender, DataGridView)
' 是否可以进行编辑的条件检查
If dgv.Columns(e.ColumnIndex).Name = "Column1" AndAlso _
Not CBool (dgv("Column2", e.RowIndex).Value) Then
' 取消编辑
e.Cancel = True
End If
End Sub
[C#]
// CellBeginEdit 事件处理方法
private void DataGridView1_CellBeginEdit( object sender,
DataGridViewCellCancelEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
// 是否可以进行编辑的条件检查
if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&
!( bool )dgv["Column2", e.RowIndex].Value)
{
// 取消编辑
e.Cancel = true ;
}
}
// CellBeginEdit 事件处理方法
private void DataGridView1_CellBeginEdit( object sender,
DataGridViewCellCancelEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
// 是否可以进行编辑的条件检查
if (dgv.Columns[e.ColumnIndex].Name == "Column1" &&
!( bool )dgv["Column2", e.RowIndex].Value)
{
// 取消编辑
e.Cancel = true ;
}
}
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/201776,如需转载请自行联系原作者