Winform中DataGridView对输入进行实时提交的办法
2016-01-23 00:00
225 查看
Winform中DataGridView对输入进行实时提交的办法
Winform中DataGridView对输入进行实时提交的办法:在CurrentCellDirtyStateChanged事件中提交表格内容.
事件中代码如下:
if (this.dataGridView1.IsCurrentCellDirty)
{
this.dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
在DataGridView中输入是就会实时触发CellValueChanged事件,而不是按回车和焦点离开时触发.
为什么DataGridView中输入时不会实时提交? 基本原理描述如下
先简单描述下我对DataGridView的数据访问的机制以及事件触发的先后顺序的理解。
1、DataGridView后台应该对应一个二维数组;
2、当选中某个单元格后,根据ColumnType属性指定的DataGridViewColumn类型创建EditingControl,将当前单元格的值赋给EditingControl,同时触发CellBeginEdit事件;
3、当EditingControl.Text发生变化后,触发CurrentCellDirtyStateChanged事件,
4、如果在该事件中添加DataGridView.Commit()方法,将变化的内容提交到DataGridView后台对应的二维数组中,同时会触发CellValueChanged事件;
5、那么我们就可以在该事件中,实时对编辑的单元格内容进行校验。
在DataGridView添加如下的事件( CurrentCellDirtyStateChanged)
private void dataGridView2_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
//添加下面的代码后,你用鼠标点击CheckBox列的check变化后触发CellValueChanged事件
if (dataGridView2.CurrentCell.ColumnIndex == 0)
{
dataGridView2.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
注意还有一个问题:
添加DataGridViewCheckBoxColumn列后,网上有说点击check后状态不改变的问题。
我的经验:
1、DataGridView必须选择Eable Editing,否则你点击check状态不变
2、DataGridViewCheckBoxColumn的ReadOnly设置为false
相关文章推荐
- 选择蜂窝教育iOS培训 求职不在迷茫
- android:列表对话框(11)
- android:几种对话框分类(11)
- andriid:通知的简单记录(11)
- android中PopupWindow弹出式窗体菜单简单记录(11)
- android中popmenu简单记录(11)
- android:中两种创建Fragment的方法(12)
- android:选项(OptionMenu)和上下文菜单 (ContextMenu )简单记录(11
- android:ListFragment简单记录(12)
- 宏正ATEN创设中国内地分公司,主攻ALTUSEN高端市场业务
- 系统linux/redhat6.5 zabbix 2.47监控nginx1.8.0 (上)
- 系统linux/redhat6.5 zabbix 2.47监控nginx1.8.0 (下)
- KVM切换器产品、技术及行业发展
- nginx
- Go语言(Golang)的web框架比较之:gin vs echo
- web中文乱码
- 如何让自己的电脑变成服务器让别人访问
- springmvc
- springmvc
- springmvc-框架提供的三种处理器映射组件