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);
                }
            }

      

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

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

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

  • 相关阅读:
    编译环境及编译器介绍
    linux下同步window的firefox
    DPDK pdump抓包说明
    linux TCP协议(1)---连接管理与状态机
    Linux用户态数据发送和接收
    DPDK之内存管理
    linux socket系统调用层
    linux网络栈结构
    DPDK mbuf何时释放回内存池?
    虚拟设备之linux网桥
  • 原文地址:https://www.cnblogs.com/ws1996/p/6727703.html
Copyright © 2011-2022 走看看