Csharpsss
Csharpsss
2018-06-11 08:09
采纳率: 88.2%
浏览 1.6k

设定datagridview第一列中每个单元格输入的最大字符长度为10

若超过10 messageboxshow输入错误,请重新输入 源码

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • showbo
    已采纳

    计时器延时执行下,要不确实存在这个问题,blur后就没搞了

        private void dgv1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            int max = 5;
            if (e.ColumnIndex == 0 && dgv1.CurrentCell.Value != null && dgv1.CurrentCell.Value.ToString().Length > max)
            {
                MessageBox.Show("姓名最大长度为:" + max + "个字符,请重新输入!");
                DataGridViewCell cur = dgv1.CurrentCell;
    
    
                System.Timers.Timer t = new System.Timers.Timer(10);
                t.Elapsed += delegate(object tsender, System.Timers.ElapsedEventArgs te)
                {
                    this.Invoke(new SetCur(() =>
                    {
                        dgv1.CurrentCell = cur;
                        dgv1.BeginEdit(true);
                        t.Enabled = false;
                        t.Close();
                    }));
    
                };
                t.Enabled = true;
            }
        }
    
    点赞 评论
  • showbo

    添加CellEndEdit事件,套下面的代码就行

             private void dgv1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                int max = 10;
                if (e.ColumnIndex == 0 && dgv1.CurrentCell.Value != null && dgv1.CurrentCell.Value.ToString().Length > max)
                {
    
                    MessageBox.Show("姓名最大长度为:" + max + "个字符,请重新输入!");
                    DataGridViewCell cur = dgv1.CurrentCell;
    
                    dgv1.CurrentCell = cur;
                    dgv1.BeginEdit(true);
                        }
                }
    
    点赞 评论
  • dabocaiqq
    dabocaiqq 2018-06-11 08:48

    图片说明
    测试通过,请采纳showbo

    点赞 评论
  • u010371458
    对信仰的忠诚 2018-06-11 09:01

    两种方式:
    1.DataGridView的CellValueChanged事件;添加CellValueChaned事件,判断触发的是否为第一列的单元格,如果是,直接判断长度,弹出消息就可以了
    2.设置列的maxLength和ErrorText属性

    点赞 评论

相关推荐