DataGridView中EnditCommit()调用之后,单元格的内容被全选了,每次输入都要鼠标点击定位到最后才能继续输入...

因为某些需求,DataGridView在输入一次内容,就要调用ECommitEdit(DataGridViewDataErrorContexts.Commit)来将内容提交,但是这样做之后,控件就会当你输入的内容都完成了,所以将内容全选(内部的原理我还没时间去了解,所以不太清楚,希望知道的人可以告诉我)

解决方案:

为了让用户可以正常输入一串字符,在每次调用CommitEdit()方法之后,都获取控件当前单元格对应控件类型TextBox currentTextBox,调用currentTextBox的select()方法将光标定位到文本最后一个字符处,代码如下

base.dgvDetail.CommitEdit(DataGridViewDataErrorContexts.Commit);
                TextBox currentTextBox = base.dgvDetail.EditingControl as TextBox;
                if (currentTextBox!=null&&currentTextBox.Text != null)
                    currentTextBox.Select(currentTextBox.Text.Length, 0);//防止CommitEidt后文本被全选

注意还要考虑调用CommitEdit()方法时,绑定的控件不是TextBox的情况

转载于:https://www.cnblogs.com/cellphoneyeah/p/6474953.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值