积极答复者
自动计算列宽,判断文本宽度的效率问题

问题
-
日前遇到一个问题:系统里使用了一个开源的网格控件,应用时发现自动设置列宽的函数效率极低。由于在项目只有文本数据,所以就针对网格中只填充文本数据的情况专门写了一个计算列宽的函数。但是发现效率依然不理想,在10列、3000行的数据规模下,整个设置列宽的过程需要80秒左右。
鉴于计算列宽的逻辑比较简单,所以我认为问题应该出在判断文本宽度的函数上。在整个过程中,计算每个单元格中文本宽度的函数的执行次数显然是最多的。
我使用的判断文本宽度的方法是Graphics.MeasureString,想请教一下这个函数的效率是不是比较低?如果是,那是否有效率更好的方法?
答案
-
你好,
不要一次做这么多的计算,那你可以使用分页的方法,每显示一屏时,计算并设置一下列宽好了。或者你干脆设计你程序的逻辑,提前使用工作线程在后台做好计算,然后当需要时设置列宽好了。
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- 已标记为答案 泉子 2009年6月15日 1:13
全部回复
-
你好,
不要一次做这么多的计算,那你可以使用分页的方法,每显示一屏时,计算并设置一下列宽好了。或者你干脆设计你程序的逻辑,提前使用工作线程在后台做好计算,然后当需要时设置列宽好了。
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- 已标记为答案 泉子 2009年6月15日 1:13