Tech Neo 创造一个纯粹高质的技术交流平台

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

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

请先 登录 后评论

最佳答案 2018-06-12 14:21

计时器延时执行下,要不确实存在这个问题,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;
        }
    }
请先 登录 后评论

其它 3 个回答

CSDN用户

添加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);
                    }
            }
请先 登录 后评论
CSDN用户

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

请先 登录 后评论
CSDN用户

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

请先 登录 后评论