dataGridView设置行列不可用 失效问题
2016-11-02 17:29
260 查看
想起一件小技巧,记录下。
0.设置不可编辑的几种方式
第一种方式,一般使用ReadOnly=true属性设置。
第二种方式,使用EditMode 属性:DataGridView.EditMode 属性被设置为 DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。但是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。
第三种方式:根据条件设定单元格的不可编辑状态
当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的方法太麻烦的时候,你可以通过 CellBeginEdit 事件来取消单元格的编辑。
1.设置行只读
DataGridView是使用时设置某些行不可用时ReadOnly会发现失效,仍然可以编辑。
可能在于数据刷新后这个设置即无效,例如重新绑定、切换tab等事件发生。
实际上应该在数据绑定后才可以其效果,即事件DataBindingComplete
2.设置列只读:
3.设置某行某列只读
4.所有单元格不可编辑
DataGridView 内所有单元格都不可编辑(不可新增行,不可删除行):
其他:
不显示最下面的新行:DataGridView1.AllowUserToAddRows = False
是不是最新行:DataGridView1.CurrentRow.IsNewRow
最新行行号:DataGridView.NewRowIndex
禁止DataGridView1的行删除操作:DataGridView1.AllowUserToDeleteRows = false;
。。。。
其他参见参考链接
参考:
WinForm设置DataGridView某些行和列只读
DataGridView 设定单元格只读
0.设置不可编辑的几种方式
第一种方式,一般使用ReadOnly=true属性设置。
第二种方式,使用EditMode 属性:DataGridView.EditMode 属性被设置为 DataGridViewEditMode.EditProgrammatically 时,用户就不能手动编辑单元格的内容了。但是可以通过程序,调用 DataGridView.BeginEdit 方法,使单元格进入编辑模式进行编辑。
第三种方式:根据条件设定单元格的不可编辑状态
当一个一个的通过单元格坐标设定单元格 ReadOnly 属性的方法太麻烦的时候,你可以通过 CellBeginEdit 事件来取消单元格的编辑。
// 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; } }
1.设置行只读
DataGridView是使用时设置某些行不可用时ReadOnly会发现失效,仍然可以编辑。
dataGridView.DataSource = DataTable0; //此时设置失效 dataGridView.Rows[0].ReadOnly = true;
可能在于数据刷新后这个设置即无效,例如重新绑定、切换tab等事件发生。
实际上应该在数据绑定后才可以其效果,即事件DataBindingComplete
private void dataGridView_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { //绑定事件DataBindingComplete 之后设置才有效果 dataGridView.Rows[0].ReadOnly = true; //背景设置灰色只读 dataGridView.Rows[1].DefaultCellStyle.BackColor = Color.Lavender; //同样 Style设置最好也在绑定事件后 //dataGridView.Rows[0].HeaderCell.Style = style; }
2.设置列只读:
dataGridView.Columns("列名").ReadOnly = True //设置列只读 dataGridView.Columns("列名").CellTemplate.Style.BackColor = Color.Lavender //背景设置灰色只读
3.设置某行某列只读
int columnIndex = 0; int rowIndex = 0; //指定列序号、行序号方式 dataGridView1[columnIndex, rowIndex].ReadOnly = true; //或者这样写 按照row的cell dataGridView1.Rows[rowIndex].Cells[columnIndex].ReadOnly = true;
4.所有单元格不可编辑
DataGridView 内所有单元格都不可编辑(不可新增行,不可删除行):
dataGridView1.ReadOnly=true;
其他:
不显示最下面的新行:DataGridView1.AllowUserToAddRows = False
是不是最新行:DataGridView1.CurrentRow.IsNewRow
最新行行号:DataGridView.NewRowIndex
禁止DataGridView1的行删除操作:DataGridView1.AllowUserToDeleteRows = false;
。。。。
其他参见参考链接
参考:
WinForm设置DataGridView某些行和列只读
DataGridView 设定单元格只读
相关文章推荐
- Winform DataGridView VirtualMode虚拟模式不能复选,勾选失去焦点后失效的问题
- servlet 中response.setHeader设置response HTTP 头失效问题解决
- listview中的item布局跟标签宽高设置失效的问题
- VC无法设置断点,断点失效问题
- android 软件盘设置搜索失效问题处理
- 微信“无法回答问题设置”失效
- 关于用js和attr("selected",true);给select设置选中的值失效问题
- CentOS设置系统时间,重启后失效问题
- a便签hover设置颜色失效问题解决
- servlet 中response.setHeader设置response HTTP 头失效问题解决
- Android中ScrollView子空间设置“match_parent”失效的问题。
- 关于用js和attr("selected",true);给select设置选中的值失效问题
- 关于.NET MVC中带扩展名路由设置失效的问题的问题
- 设置DataGridView控件的当前行,光标定位问题
- 开发日志:设置<DIV>内容不自动换行,及inline后width和height等失效的问题
- 使用wordpress时遇到的一个奇怪的问题:把页面设置为首页之后分页失效
- mysql wait_timeout设置导致连接池连接失效问题分析
- IE下 设置body{overflow:hidden;}失效 问题解决
- 关于用js和attr("selected",true);给select设置选中的值失效问题
- 解决SWT Button设置背景颜色不可用的问题