DataGridView编辑状态和CurrentCellDirtyStateChanged

问题说明:

在DataGridView中运用一些控件会出现很奇怪的现象,比如在DataGridViewComboColumn或者DataGridViewCheckBoxColumn等这类列中,当用户进行了改变,比如一个DataGridViewComboCell中改变了选项,DataGridViewCheckBoxCell进行过了勾选,并不会立刻生效,而是进入了编辑状态。一个复选框,当你点了勾选结果勾没有出来,只有当你换了一行之类的结束编辑状态的时候才会发生改变,这样用起来有时候就会很烦。。。这类控件正常使用应该是在进行了改变后马上就可以处理而不会进入编辑状态的(举个例子,当一个ComboBox选择一个子项的时候,如果有其它关联的显示,改变了子项应该立刻更新,而不是要等到用户回车之类的动作之后才更新),这样用户体验度会比较好一点。

处理办法:

找到DataGridView的事件中的CurrentCellDirtyStateChanged,当用户进入编辑的时候会立刻触发改事件。可以在改事件中决定是不是要进入编辑或者是提交当前编辑项。

private void DataGridView1_CurrentCellDirtyStateChanged(object sender,EventArgs e)
{
    /*
    *这里可以加入判断是不是需要立刻提交,如果不用就返回
    */
    if(DataGridView1.IsCurrentCellDirty)
    {
        DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

当立刻提交数据之后,就会触发CellValueChanged事件,这时候是不会触发CellValidating事件的。

时间: 2024-10-08 09:41:41

DataGridView编辑状态和CurrentCellDirtyStateChanged的相关文章

JTable只要一双击就进入编辑状态,禁止的方法实现

我用JTable做了一个表格,表格内容只供查看和选择,可每次只要一双击,就进入编辑状态,可是现在我不需要当双击的时候修改表格的内容.这时候需要重载isCellEditable方法. 下面是我的实现的代码: DefaultTableModel model = new DefaultTableModel(date, columnNames) { public boolean isCellEditable(int row, int column) { return false; } }; 这样设置的话

winform如何实现一个窗体显示后,他的窗体处于不可编辑状态

1)可以使用this.Enabled = false;是窗体处于不可编辑状态. 2)使用showDialog(),showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现```不允许进行后台运行```就是你想编辑什么的时候```非得先关闭showDialog()窗口界面才可以进行其他操作

玩转web之JQuery(二)---改变表单和input的可编辑状态(封装的js)

var FormDeal = { /** * 功能 :将表单的所有input都设为可编辑的 *@param 要操作表单的id */ formWritable: function (formId) { $("#"+formId+" input,textarea").removeAttr("readonly"); $("#"+formId+" input,textarea").css('backgroundCo

easyui 在编辑状态下,动态修改其他列值。

1 首先是自定义了一个方法uodateColumn更新列值 2 3 /** 4 *自定义的修改列值方法 5 */ 6 $.extend($.fn.datagrid.methods, { 7 updateColumn: function(datagrid,data) { 8 datagrid.each(function(){ 9 //获取缓存中的配置数据 10 var gridObj=$.data(this,"datagrid"); 11 var opts=gridObj.options

DevExpress XtraGrid网格控件示例三:获取当前处于编辑状态的值

使用下面的示例代码,以获得当前编辑的值. C# 1 string editingValue; 2 if(gridControl1.KeyboardFocusView.IsEditing) 3 editingValue = gridControl1.KeyboardFocusView.EditingValue.ToString(); DevExpress XtraGrid网格控件示例三:获取当前处于编辑状态的值,布布扣,bubuko.com

编辑crontab -e无法退出编辑状态

在进入crontab -e进入编辑状态时,会提示使用哪一种编辑器. 如果选择使用/bin/nano,那么在编辑完后退出时,应按Ctrl+X,这时会提示是否保存,输入Y,就保存退出啦.

iOS7 iOS8 UITableviewCell处于编辑状态,dismiss或者back崩溃

今天在项目中遇到一个坑爹的 Crash , 在 iOS7 iOS8 UITableviewCell处于编辑状态,dismiss或者back崩溃  iOS9不会 原因:苹果的BUG代码 解决:在视图消失之前把编辑状态设为NO -(void)viewDidDisappear:(BOOL)animated{    [superviewDidDisappear:animated];    self.shoppingBagTableView.editing = NO;  /** ios7 ios8 编辑状

Geodatabase - 判断是否处于编辑状态

Engine中提供IDatasetEdit来判断数据是否处于编辑状态,我们知道,在ArcMap中,进行编辑的不一定都是要素类,也可以是表,网络几何等.以下能在ArcMap中进行编辑的数据都实现了 IDatasetEdit接口: Classes that implement IDatasetEdit Classes Description AttributedRelationshipClass Esri Attributed Relationship Class object. Cadastral

自定义的cell,在编辑状态不会右偏

我现在自定义了一个cell,但是当tableview出于编辑状态,左边出现红色小横杠的时候,cell里面的内容不会向右平移,这个改如何处理呢? [self addSubview:自定义的控件];如图所示: 你是不是直接把自定义的控件放在cell上了呢?那就对了,正确的方式应该 把自定义的控件加到cell的contentView上,这样就可以平移了哦!而不是直接加到 cell上 [self.contentView addSubview:自定义的控件];如图 好了,问题解决了,如果对你有所帮助,请关