找回密码
 立即注册

QQ登录

只需一步,快速开始

小格

中级会员

6

主题

12

帖子

780

积分

中级会员

积分
780

活字格认证

小格
中级会员   /  发表于:2014-12-4 12:50  /   查看:7732  /  回复:5
请问使用 c1PrintDocument1.Generate();后如何控制每一个打印页的边距?

5 个回复

倒序浏览
小格
中级会员   /  发表于:2014-12-4 15:05:00
沙发
追问: 在分配好各个页面后,我要改变不同页面的  PageLayout
c1PrintDocument1.Pages.PageSettings.PageLayout.PageHeader.Height

设置该值的时候总是报错,提示为null不知如何解决!
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-4 15:29:00
板凳
回复 1楼小格的帖子

Generate方法需要在执行之前准备好数据和设置页面。
建议你使用StartDoc和EndDoc来完成需求。
在StartDoc方法调用后,你可以在这里地方准备数据,以及对每次打完一页,对新页进行更改。
在所有结束后使用EndDoc方法。
我写了一段代码给你做参考:
  1. #region StartDoc-EndDoc
  2.             c1PrintDocument1.AllowNonReflowableDocs = true;
  3.             c1PrintDocument1.StartDoc();
  4.             //First table
  5.             rt3.Style.GridLines.All = new C1.C1Preview.LineDef(Color.DarkGray);
  6.             const int r3 = 3;
  7.             const int c3 = 3;
  8.             for (int row = 0; row < r3; ++row)
  9.             {
  10.                 for (int col = 0; col < c3; ++col)
  11.                 {
  12.                     C1.C1Preview.RenderText celltext = new C1.C1Preview.RenderText();
  13.                     celltext.Text = string.Format("Cell ({0}, {1})", row, col);
  14.                     rt3.Cells[row, col].RenderObject = celltext;
  15.                 }
  16.             }
  17.             c1PrintDocument1.RenderBlock(rt3);
  18.             // Insert a new page by calling the NewPage method
  19.             Unit u1=new Unit(1000, UnitTypeEnum.Pixel);
  20.             this.c1PrintDocument1.PageLayout.PageSettings.TopMargin = u1;
  21.             c1PrintDocument1.NewPage();
  22.             //
  23.             //Second table
  24.             rt4.Style.GridLines.All = new C1.C1Preview.LineDef(Color.DarkGray);
  25.             const int r4 = 2;
  26.             const int c4 = 2;
  27.             for (int row = 0; row < r4; ++row)
  28.             {
  29.                 for (int col = 0; col < c4; ++col)
  30.                 {
  31.                     C1.C1Preview.RenderText celltext = new C1.C1Preview.RenderText();
  32.                     celltext.Text = string.Format("Cell ({0}, {1})", row, col);
  33.                     rt4.Cells[row, col].RenderObject = celltext;
  34.                 }
  35.             }
  36.             c1PrintDocument1.RenderBlock(rt4);
  37.             c1PrintDocument1.EndDoc();
  38.             c1PrintPreviewControl1.Document = c1PrintDocument1;
  39.             #endregion
复制代码

评分

参与人数 1满意度 +5 收起 理由
小格 + 5 谢谢!

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-4 15:35:00
地板
回复 2楼小格的帖子

你这段代码的接口有误,找不到Pages.PageSettings的接口。我推测你是想写c1PrintDocument1.PageLayout.PageHeader接口。 Height是PageHeader下的一个属性,首先你需要定义一个PageHeader,在这个定义的PageHeader里设置Height,然后将定义好的PageHeader设置给c1PrintDocument1.PageLayout.PageHeader,就会按照你给定的显示。否则这个PageHeader默认是Null。因此会抛出异常。

评分

参与人数 1满意度 +5 收起 理由
小格 + 5 明白了,谢谢

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
小格
中级会员   /  发表于:2014-12-4 18:41:00
5#
谢谢你的帮助!我弄明白了!
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-5 09:21:00
6#
回复 5楼小格的帖子

不用客气。
谢谢你的评分。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部