我正在尝试根据页码以编程方式设置事件报表中的边距。
具体来说,第一页需要有较小的边距(以便最上面带有寄信人地址的文本框与公司 Logo 的对齐方式相匹配),之后的每一页都应具有标准的 2.54 厘米边距。
我读过一些帖子,表明检测实际页码可能会出现问题,因此我尝试使用 ReportStart 和 PageStart 处理程序以及一些非常简单的逻辑来设置边距。
在报告的代码隐藏中,我添加了两个处理程序和 bool 值:
this.ReportStart += UFAnReportStart;
this.PageStart += UFAnPageStart;
bool bFirstPage = true;
然后添加两个回调如下:
private void UFAnReportStart(object sender, System.EventArgs eArgs)
{
this.PageSettings.Margins.Top = 0.1965278F;
}
private void UFAnPageStart(object sender, System.EventArgs eArgs)
{
// every page after the first should have standard margins.
if (!bFirstPage)
{
this.PageSettings.Margins.Top = 2.54F;
}
bFirstPage = false;
}
这似乎对利润率没有任何影响。这种方法完全是错误的吗?或者 PageSettings 对象是报表范围的属性吗?
欢迎任何替代方法的建议。
使用 Activereports3,版本 5.2.1013.2。
谢谢!
最佳答案
以编程方式,单位为英寸而不是 CM :) 设计时设置仅影响设计器中显示的内容。
以下内容对我有用:
public void ActiveReport_ReportStart()
{
rpt.PageSettings.Margins.Top = 0.05f;
rpt.PageSettings.Margins.Left = 0.05f;
rpt.PageSettings.Margins.Right = 0.05f;
rpt.PageSettings.Margins.Bottom = 0.05f;
}
public void ActiveReport_PageEnd()
{
// The first page (page index 0) will inherit the page margins set in ReportStart.
// We immediately reset the page margins in the first PageEnd event to ensure subsequent pages get the larger margins.
if (rpt.Document.Pages.Count == 0)
{
rpt.PageSettings.Margins.Top = 1.0f;
rpt.PageSettings.Margins.Left = 1.0f;
rpt.PageSettings.Margins.Right = 1.0f;
rpt.PageSettings.Margins.Bottom = 1.0f;
}
}
The ActiveReports Support Forums免费、活跃并由我们的支持团队监控,因此它们是询问有关 ActiveReports 问题的好地方。
希望这有帮助,
Scott Willeke
GrapeCity inc.
关于.net - AR3 中页面特定的边距设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3331572/