C#——DataGridView控件填写数据事件

摘要:
例如,如果单击某个单元格,该单元格将进入编辑状态,并且将发生CellBeginEdit事件。然后我输入1,2…或更多,上述事件将不会发生。事实证明,dataGridView控件的单元格只是一个容器,它可以容纳其他控件,最常见的是文本框。EditingControlShowing事件早于上述事件发生。dataGridView控件加载TextBox,以便用户可以编辑它。加载TextBox时会发生此事件。您可以在time参数中获取对TextBox的引用,并动态注册事件当dataGridView控件加载子控件进行编辑时发生。

对于DataGridView控件,与单元格内容相关的有以下这几个事件:

<span style="font-size:18px;">// 当单元格内容改变并且提交之后发生(提交一般是单元格在编辑完之后失去焦点)
private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    
}
 
// 当单元格进入编辑状态时发生
private void dataGridView_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
    
}
 
// 在单元格的状态相对于其内容的更改而更改时发生。
private void dataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    
}
 
// 在单元格完成编辑时发生
private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
 
}</span>

但是以上这几个事件都不能实现每次向单元格输入新的内容时发生。举个例子,我单击一个单元格,则单元格进入编辑状态,CellBeginEdit事件发生,然后我输入1,2……乃至更多的东西,上述的事件也不会发生。另外Key*系列的事件也试过,也没反应。

如果要像TextBox那样,每输入一个字符就发生一次的事件怎么办呢?可以用以下方法。原来dataGridView控件的单元格只是个容器,他可以容纳其他的控件,最一般的就是一个文本框。EditingControlShowing事件比上述事件还要早发生,他是dataGridView控件为了使用户可以编辑,而加载一个TextBox(如果单元格时复选框,是其他的控件,那么就加载对应的控件),加载TextBox时这个事件发生,可以在时间参数中获取这个TextBox的引用,动态注册一个事件即可。

<span style="font-size:18px;">// 当dataGridView控件加载一个子控件用于编辑时发生。
private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    TextBox EditingTB = e.Control as TextBox; // 获取编辑用的文本框的引用
    EditingTB.TextChanged += EditingTB_TextChanged; // 动态注册事件
}
 
// 当子控件的内容更改时发生
private void EditingTB_TextChanged(object sender, EventArgs e)
{
    String nowstr = (sender as TextBox).Text;
}</span>

要注意一点,这里的EditingTB应该保存下来,然后在CellEndEdit事件中注销事件。

免责声明:文章转载自《C#——DataGridView控件填写数据事件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ECNUOJ 2147 字符环SpringBoot+Thyemleaf开发环境正常,打包jar发到服务器就报错Template might not exist or might not be accessible下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PyQt5单元格操作大全

1、显示二维列表数据(QTableView)控件 '''显示二维列表数据(QTableView)控件数据源model需要创建一个QTableView实例和一个数据源model,然后将其两者关联MVC模式 model viewer controller 前后端关联MVC的目的是将后端的数据和前端页面的耦合度降低'''from PyQt5.QtWidgets...

转载:winform的DataGridView中用C#实现按钮列置灰

DataGridView 控件包括 DataGridViewButtonCell 类,该类用于显示具有类似按钮的用户界面 (UI) 的单元格。但 DataGridViewButtonCell 不提供禁用由单元格显示的按钮外观的方式。下面的代码示例演示如何自定义 DataGridViewButtonCell 类来显示可以显示为禁用的按钮。本示例定义一个新的单...

sqlserver 实现数据变动触发信息

1、建立存储过程,功能是动态写入文件中信息,可以在触发器或存储过程调用。 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO create proc [dbo].[SP_SendMagToFile] ( @path varchar(100), @fileName varchar(100), @ms...

前端必备的js知识点(转载)

1、本文主体源自:http://www.cnblogs.com/coco1s/p/4029708.html,有兴趣的可以直接去那里看,也可以看看我整理加拓展的。2、js是一门什么样的语言及特点?        js是一种基于对象和事件驱动的并具有相对安全性的客户端脚本语言。也是一种广泛用于web客户端开发的脚本语言,常用来给html网页添加动态功能,如响应...

python ORM框架:SqlAlchemy

  ORM,对象关系映射,即Object Relational Mapping的简称,通过ORM框架将编程语言中的对象模型与数据库的关系模型建立映射关系,这样做的目的:简化sql语言操作数据库的繁琐过程(原生sql的编写及拼接等),转而直接使用对象模型来操作数据库做替代 第一部分       SqlAlchemy本身无法直接操作数据库,它是建立在第三...

从ASP.NET得到Microsoft Word文档

引言         这篇文章是应在一个ASP.NET项目中建立Microsoft Word文档的需要而写的。本文描述了怎样使用ASP.NET来创建和修改Microsoft Word文档。 背景         自动化(Automation)是一个过程,它允许编程语言譬如Visual Basic.NET或C#写的应用程序可以编程控制其它应用程序。自动化到...