yty 发表于 2017-9-2 10:51:14

TextControl禁止重绘问题

我想在一些触发比较频繁的事件中(例如Changed事件),编码控制一些编辑动作,但TextControl控件的对象模型与UI视图层绑定的非常严密,用代码编程对象时,UI层会无条件地立即反映更改结果,导致如果算法稍微复杂一些(例如更改当前插入点,获取当前插入点的链接对象,然后把插入点更改回原位置),UI展示出来的效果就是频繁的跳动(例如只要赋值一次插入点,视图上插入点会立即变化),遍历对象进行处理时,情况更为严重。这样一是产生了界面“鬼畜”一般跳动的不好的视觉效果,二是极大影响了性能。例如使用贵司C1FlexGrid控件循环插入新行,是否禁用重绘所耗用的时间有天壤之别。在内存中处理数据应该是极快的,但每条语句都要触发文档图形层的重绘,甚至重新排版等复杂内部算法等,就太不妥了。一般来说,WinForm控件会支持Redraw属性或者BeginUpdate()/EndUpdate()方法对,暂时禁用UI层的重绘,待内存对象模型操作全部完成后,一次性重绘展示视图变化结果。但TextControl找不到这个功能。请问我应该如何编码,以改善内存对象模型的批量操作对UI层强制重绘的影响?

Richard.Ma 发表于 2017-9-4 14:38:16

目前TextControl确实没有办法实现此功能,我们这边也没有过多更好的建议
页: [1]
查看完整版本: TextControl禁止重绘问题