zoukankan      html  css  js  c++  java
  • DataGridView中的DataGridViewComboBoxColumn 让其值改变联动

    在工作中自己也遇到过这类问题, 最近也有很多人问我这个问题, 就此机会写出来记录一下.

    首先,顾名思义,值改变事件我们会想到 dataGridView1_CellValueChanged 这个事件,想必看名字都知道.具体代码如下.

       private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.Columns[e.ColumnIndex].Name == "City")
                {
                    DataGridViewComboBoxCell comboxCell =(DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells["City"];
                    DataGridViewTextBoxCell textbox =(DataGridViewTextBoxCell)dataGridView1.Rows[e.RowIndex].Cells["城市"];
                    textbox.Value = comboxCell.Value.ToString();
                    dataGridView1.Invalidate();
                }
            }

    如上代码只是个演示,至于判断当前列内容是否为空之类的一些条件筛选自己加.

    至此.运行之后我们会发现.当我们选择 DataGridViewComboBoxCell 这一列中值的时候,并没有立即联动改变所需要改变列的值.而是我们去点击那一列的时候或者点击别的行之后才会变. 这样是不是会有点不太好呢.所以还需要写到一个事件.如下代码。

    我们还需要触发dataGridView1的CurrentCellDirtyStateChanged事件,并且在事件中调用DataGridView.CommitEdit 方法。

    [关于CommitEdit MSDN解释如下:将当前单元格中的更改提交到数据缓存,但不结束编辑模式。 ]

    这样我们关心的那个事件CellValueChanged就能够被顺利触发了。示例代码如下。

     private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (dataGridView1.IsCurrentCellDirty)
                {
                    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
                }
            }

      

    至此。本博文的内容介绍完毕。因为平时工作忙,很少写博文,看到网上有些问题也并不全面。所以记录下平时工作中所遇到的问题。与大家共同进步。

    看了之前写过的博文也有不少浏览量,有些还是很少.也许是关键字的原因难以搜索到或者很少有人遇到我这样的问题吧.

    最主要还是本人的博文水平有限,并不是很了解这块。望大家见谅。望看到的朋友们在底下给个回复。互动一下。谢谢了。

  • 相关阅读:
    Magento速度优化
    magento-connect-manage出现404或者500内部错误的解决办法
    magento -- 给后台分类管理页的分类商品加一栏商品类型
    magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
    magento -- 如何为商品分类(category)添加自定义属性
    magento -- 如何改善前台图片质量
    安装Let's Encrypt SSL证书
    centos版本查看
    ps
    设置桥接虚拟网卡
  • 原文地址:https://www.cnblogs.com/ws1996/p/6727703.html
Copyright © 2011-2022 走看看