zoukankan      html  css  js  c++  java
  • DataGridView 行数据验证:当输入数据无效时不出现红色感叹号的Bug

    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?

  • 相关阅读:
    编程思想
    为什么静态成员、静态方法中不能用this和super关键字
    C#中静态与非静态方法比较
    数组,集合,列表的使用与区别
    2017-3-23 网络IP
    [精彩] 关于DB2的内存分配
    DB2 常用命令
    SQL0973N在 "<堆名>" 堆中没有足够的存储器可用来处理语句
    DB2通用数据库性能调整的常用方法
    创建DB2数据库联合对象
  • 原文地址:https://www.cnblogs.com/chengyb/p/11388887.html
Copyright © 2011-2022 走看看