自动缩成一页,C1会失去响应,如何处理?
有时候一份客户的一份报告,正常超过一页,客户希望我们能够自动缩小字体,好适应一页。C1有没现成的解决方案?
我们自动做了一个方案:生成好报告后,检查一下页数,如果超过一页,就缩字体,直到缩成一页或者到了最小字体。
理论上这个算法不错,但是实际情况,经常在这个过程中失去响应。不知有何好办法解决?大致代码如下:
report.EndReport += C1ReportRenderCompleted;
report.Render();
c1RenderCompletedWaiter.WaitOne();
if (report.GetPageCount() > 1)
{
renderTimes++;
report.Render();
while ( 没有达到最小字体)
代码居然显示不全:'(。后面的伪码:
while ( 没有达到最小字体)
{
缩小字体;
report.Render();
c1RenderCompletedWaiter.WaitOne();
if (report.GetPageCount() == 1) 返回成功;
}
返回失败。
这个确实没有什么好办法,C1Report没有提供自适应缩放的办法,只能这样子判断
我觉得可能的一个优化也只能是减少循环的次数,
比如说根据数据行数以及分组的数量,其实是可以判断出总行数,进而判断大概的高度,甚至于说计算出总的高度的,以预估出一个对应的字号
另外你提到的“失去响应”这个暂时无法判断具体原因,感觉有可能和你这边用多线程有关系,可以先单线程直接写试试
跟踪下来,代码在waitone时就没反应了。感觉是多render几次C1就不返回了。但不是每次都死,而是几天挂一次,很是头大…… 建议发我一个demo我帮你看看具体原因 你好,请问问题是否以解决了呢?若仍未解决,请像上面同事所提的,提供一个demo,我们来调研。 你好,请问问题是否以解决了呢?若仍未解决,麻烦提供一个demo,我们来调研。
页:
[1]