DataGridView的即时更新方法 收藏
最近用了DataGridView,深有体会,最深刻一点是它的事件。我想很多人都希望编辑表格单元的同时更新其他东西,就好像TextBox的TextChanged事件,但DataGridView却没有提供类似TextChanged那样的事件。我想用下面的一个例子说明如何达到实时更新的效果。

上面的Form有一个DataGridView实例dataGridView1和一个Label实例label1。dataGridView1有3个字段,分别是班级(DataGridViewComboBoxColumn)、姓名(DataGridViewTextBoxColumn)和成绩(DataGridViewTextBoxColumn)。

现在要实现一个效果,就是如果更改了dataGridView1中任意一个cell(单元格)的值,label1的text就更新为那个cell的值。代码如下:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.dataGridView1.EditingControlShowing +=
                new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
        }
        //编辑cell时激发的事件
        void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (e.Control.GetType().Equals(typeof(DataGridViewComboBoxEditingControl)))//cell为类ComboBox时
            {
                e.CellStyle.BackColor = Color.FromName("window");
                DataGridViewComboBoxEditingControl editingControl = e.Control as DataGridViewComboBoxEditingControl;
                editingControl.SelectedIndexChanged += new EventHandler(editingControl_SelectedIndexChanged);
            }
            else if (e.Control.GetType().Equals(typeof(DataGridViewTextBoxEditingControl)))//cell为类TextBox时
            {
                e.CellStyle.BackColor = Color.FromName("window");
                DataGridViewTextBoxEditingControl editingControl = e.Control as DataGridViewTextBoxEditingControl;
                editingControl.TextChanged += new EventHandler(editingControl_TextChanged);
            }
        }
        //TextBox的TextChanged事件
        void editingControl_TextChanged(object sender, EventArgs e)
        {
            this.label1.Text = dataGridView1.CurrentCell.EditedFormattedValue.ToString();
        }
        //Combox的SelectedIndexChanged事件
        void editingControl_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.label1.Text = dataGridView1.CurrentCell.EditedFormattedValue.ToString();
        }     
    }

有几点要说明的

1.       EditingControlShowing 是DataGridView自带的事件,当某个cell被编辑时就会激发该事件。接着就到了dataGridView1_EditingControlShowing 函数,然后(if…else if…)判断那个cell是DataGridViewComboBoxEditingControl还是DataGridViewTextBoxEditingControl 控件类型。判断好控件类型之后就可以用该类型自带的事件,例如DataGridViewComboBoxEditingControl 自带的SelectedIndexChanged 事件。

2.       为什么用dataGridView1.CurrentCell.EditedFormattedValue而不是dataGridView1.CurrentCell.Value,因为处于编辑状态的cell的Value是没有同时更新的,我们更改的是它的EditedFormattedValue。这个区别当然有好处,这里不谈。

3.       为什么要加一句e.CellStyle.BackColor = Color.FromName("window") ?实践是检验真理的标准,不妨去掉这句运行一下就清楚了。

http://hi.baidu.com/yk±±¼«ÐÇ/blog/item/c4ecc50026862e08738da5f6.html

转载于:https://www.cnblogs.com/chaobaojun/archive/2010/05/13/1734509.html

DataGridView的单元格内容即时更新方法相关推荐

  1. html多个单元格合并单元格内容,excel怎样快速把多个单元格内容合并 合并多个单元格内容的设置方法...

    excel是我们常用的办公软件,有时我们需要把多个单元个的内容合并到一个单元格里,那么excel怎样快速把多个单元格内容合并?下面小编带来合并多个单元格内容的设置方法,希望对大家有所帮助. 合并多个单 ...

  2. winform 根据DataGridView中单元格内容设置其ForeColor

    DataGridView中单元格字体的颜色设置为指定的颜色. 下面代码可以对某个单元格的前景色进行设置, DataGridview.Rows[i].Cells[j].Style.ForeColor = ...

  3. 根据DataGridView中单元格内容设置其ForeColor

    近期在做visio的二次开发,涉及到DataGridview与visio的交互,在DataGridview中一列记录天气类型:雨.雾.雪等,需要将这些天气类型的颜色设置为指定的颜色. 下面代码可以对某 ...

  4. Excel 中如何根据单元格内容删除行

    根据单元格内容快速删除行,首先需要选中含有该单元格内容的所有行,然后删除.似乎在 Excel 当中除了 VBA 以外没有其他更快捷的方法能解决这个问题了.这里将推荐几个快速根据单元格内容删除行的方法给 ...

  5. DataGridView设置单元格的提示内容ToolTip详解

    这篇文章介绍了DataGridView设置单元格提示内容ToolTip的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 ToolTip属性用来设置 ...

  6. html如何取单元格内容,JS获取表格内指定单元格html内容的方法

    JS获取表格内指定单元格html内容的方法 本文实例讲述了JS获取表格内指定单元格html内容的方法.分享给大家供大家参考.具体如下: 下面的代码先通过表格对象的rows获得指定的行的所有单元格数组, ...

  7. EXCEL中将多个单元格内容合并到一个单元格中的方法(转帖+亲自实践)

    原帖位置:EXCEL中将多个单元格内容合并到一个单元格中的方法 http://t.excelhome.net/thread-3875-1-1.html 说明:这个技巧主要用到以下2个功能 1.Offi ...

  8. java 解析excel获取单元格内容封装方法(兼容2003和2007)

    支持xls2003及xlsx2007导入excel //导入excel接口 @RequestMapping(params = "importDecMainCode", method ...

  9. excel单元格内容超出格子范围设置方法

    描述:excel单元格内容超出格子范围设置方法 步骤: 原数据 选中第一列,右键设置单元格 对齐->水平对齐:填充->确认 设置后效果

最新文章

  1. @2021 高考生,用 Python 分析专业“钱景”
  2. Java 9 - 17 特性解读:​Java 13
  3. ALV通过F4事件,实现自定义搜索帮助F4
  4. pssh批量执行启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  5. java args_Java命令行界面(第2部分):args4j
  6. 仔细看看,您会发现需要改进的地方
  7. jdk1.8新特性的应用-Stream 的终止操作
  8. 混凝土静力受压弹性模量试验计算公式_混凝土试块检测要知道的9个技巧
  9. 10大编程语言之父,你知道几个?
  10. 人脸数据集——亚洲人脸数据集
  11. linux制作iso启动盘
  12. 在腾讯云上申请一个免费的centos系统,将编好的python程序和c程序上载到centos系统,
  13. 长波红外线灯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. 操作系统独木桥问题解法
  15. 麒麟芯片配上鸿蒙系统有多快,麒麟芯片和鸿蒙系统靠边站,纯国产飞腾芯片和麒麟系统早已大规模使用...
  16. Vmware上安装openstack(Queens版)
  17. 那怎样的文档才是好的产品文档呢
  18. 仓库和门店移动出入库 手持移动终端 pda 扫描打印于一身 扫描打印小票和不干胶标签纸
  19. dropout层加在哪里_系列解读Dropout
  20. 数字化再目前阶段,有哪些需要重点投入?

热门文章

  1. 自动采集电脑壁纸PHP源码美化版
  2. .Net面试题汇总(一) 帮你轻松过笔试关
  3. Mac OSX 命令行知识
  4. Mono 开发 (使用.NET技术的你,绝对不能忽略Mono)
  5. ADO.NET 命名规范
  6. firefox伪造请求头信息,模拟手机访问网站
  7. 深入理解Magento – 第一章 – Magento强大的配置系统
  8. PHP使用ajax的post方式下载excel文件简单示例
  9. Linux内核中container_of宏的理解
  10. Linux——分区时出现This partition should be marked for use as an EFI boot partition