zoukankan      html  css  js  c++  java
  • 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事件的。

  • 相关阅读:
    什么是同源策略,什么是跨域,如何跨域,Jsonp/CORS跨域
    Scrapy
    爬虫
    Falsk-信号
    python函数中把列表(list)当参数时的"入坑"与"出坑"
    SQLAlchemy基本使用(Flask中)
    列表生成式&生成器表达式
    javascript数据结构——队列
    javascript数据结构——栈
    js数组去重的几种方法
  • 原文地址:https://www.cnblogs.com/Iamsorry/p/4876761.html
Copyright © 2011-2022 走看看