datagridview通道复选中问题

文章讲述了在DataGridView中,由于绘图操作耗时(约800-1200毫秒),可能导致点击后快速滑动时出现多行选中的问题。解决方法是通过BeginInvoke包裹耗时UI刷新,确保鼠标状态及时更新,防止按键事件阻塞。

问题现象:

创建了一个多行的datagridview,当点击单行时,在OnClick事件中注册了绘图相关的回调

发现如果点击A行,快速滑动到B,C,D行,此时均会出现BCD行被选中的效果

如果点击A行,过一会鼠标再滑动到BCD,则不会有复选中问题

实际原因:

通过debug发现,实际应该是绘图结束之前,去进行滑动,则会出现复选中现象。

log显示,绘图大概会耗时 800~1200毫秒,这期间鼠标的按键事件没有走完,则仍会认为鼠标状态处在未释放--猜测至少为非mouseUp状态

这种情况下滑动至其他行,则等同于按住鼠标滑动,因此出现了多行选中问题现象

解决方案:

实际是按键事件的处理阻塞了鼠标状态的及时更新,因此对耗时的UI刷新操作采用了BeginInvoke方法的包裹,避免其更新主线程状态

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值