让我感到惊讶的是,如果我在文本框中输入的速度足够快,那么datagrID会一次又一次地暂停渲染,并且只会渲染最终结果.它完全忽略了中间结果.这是有道理的,因为在连续的文本更改期间运行的UI线程正忙.但为什么我仍然可以输入文本框?
> TextChange
>获取数据
>刷新DataGrIDVIEw(无渲染/绘画)
> TextChange
>获取数据
>刷新DataGrIDVIEw(无渲染/绘画)
> … TextChange
>获取数据
>刷新DataGrIDVIEw(最终渲染/绘画)
>完成.
这就像文本框在另一个线程上,但绝对不是.有人知道为什么吗?
解决方法 这不是DataGrIDVIEw特有的,任何windows窗口都自动具有此功能.它由消息队列提供,消息队列是与显示窗口的线程相关联的数据结构.当线程忙于执行其他 *** 作时,windows会在输入事件(如鼠标按键单击或键盘按键)上向队列添加消息.一旦线程完成它正在做的事情,它就会重新进入消息循环(由Application.Run()启动的循环),从队列中检索消息并处理它.哪个回合导致TextChange事件触发.因此,可视化队列的好方法是作为缓冲区.默认情况下,它最多可以存储10,000个事件.
总结以上是内存溢出为你收集整理的c# – DataGridView的魔力全部内容,希望文章能够帮你解决c# – DataGridView的魔力所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)