欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DataGridView 行数据验证:当输入数据无效时不出现红色感叹号的Bug

程序员文章站 2023-10-16 12:20:14
以前的测试的时候使用正常,当输入数据无效时,行标题上会出现红色感叹号的圆形图标,最近拿起来适当修改完善了一下,发现ErrorText属性的设置失效了,行标题上死活都不出现红色感叹号的圆形图标,奇了怪了,怎么回事,搜遍全网(包括官网),没找到解决方案。 我就不信这个鞋,幸好有备份的之前的版本,拿过来和 ......
private void dgvview_cellvalidating(object sender, datagridviewcellvalidatingeventargs e)
{
       if (e.columnindex == 0 && !dgvview.currentrow.isnewrow)   //判断第一列主键列是否空值(排除新增行)
       {
           if (string.isnullorempty(e.formattedvalue.tostring()))
           {
               dgvview.rows[e.rowindex].errortext = "主键列值不能为空"; //行的errortext不生效
               e.cancel = true;   //要求再次修改,仍为编辑模式,不退出过程,程序继续往下执行
           }
       }
   if (dgvview.columns[e.columnindex].name == "contactname" && string.isnullorempty(e.formattedvalue.tostring()))
       {
            dgvview.rows[e.rowindex].cells[e.columnindex].errortext = "contactname没有录入"; //单元格的errortext生效了
       }
}

以前的测试的时候使用正常,当输入数据无效时,行标题上会出现红色感叹号的圆形图标,最近拿起来适当修改完善了一下,发现errortext属性的设置失效了,行标题上死活都不出现红色感叹号的圆形图标,奇了怪了,怎么回事,搜遍全网(包括官网),没找到解决方案。

我就不信这个鞋,幸好有备份的之前的版本,拿过来和修改后的来个一一比对,半个小时后终于找到了,能气死个人,经测试,关键就是这一句:

datagridview1.autosizerowsmode = system.windows.forms.datagridviewautosizerowsmode.none;

datagridviewautosizerowsmode必须是none时,才会出现errortext属性的错误提示图标,my god,巨硬可耻,这么关键的设置也不在官网上特别注明一下,难道是一个bug?