williambirkin

恭喜发财!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

自定义单元格验证

要求:

验证错误后焦点不离开。

实现:

单元格的验证可以使用dgv_details_CellValidating事件。

验证不通过时调用e.Cancel = true;终止事件链,单元格将保持编辑状态。

调用dgv_details.CancelEdit();可以使单元格的内容会滚到修改前的值。

使用System.Windows.Forms.SendKeys.Send("^a");将全选单元格的内容。

 

单元格选中并开始编辑状态

实现:

//DataGridView获得焦点

dgv_details.Focus();

//DataGridView指定当前单元格

dgv_details.CurrentCell = dgv_details[0, 0];

//开始编辑状态

dgv_details.BeginEdit(false);

 

定制自动生成绑定了列

实现:

dgv_details.AutoGenerateColumns = false;

 

设置列的背景色

实现:

Color GridReadOnlyColor = Color.LightGoldenrodYellow;

dgv_details.Columns[1].DefaultCellStyle.BackColor =

WinKeys.GridReadOnlyColor;

 

DataGridView单元格验证的设计的问题

问题一:绑定还是不绑定?

绑定的优势:比较简单,代码少。

绑定得缺点:DataGridView中的数据受数据源的影响(主键约束、值类型约束)。不一至时会激发DataError事件,输入的内容无法保存到单元格中和数据源中。特殊的验证(比如长度、格式等)还是需要另外写代码实现。

关于增加行的问题。增加新行时多主键的验证有问题,而且验证不通过时会将新行全部删除。限制很多,很不方便。

 

非绑定的优势:验证等处理比较灵活。不受数据源的约束。

非绑定得缺点:显示和向数据库更新数据时需要比较多的代码实现,效率比较低。

 

总的感觉在处理验证比较麻烦的场合,我还是比较喜欢非绑定的方式。如果数据量大,验证比较简单的场合使用绑定模式比较好。

不断更新中... 

posted on 2007-05-08 16:15  williambirkin  阅读(1670)  评论(1编辑  收藏  举报