找回密码
 立即注册

QQ登录

只需一步,快速开始

刘君

中级会员

141

主题

335

帖子

942

积分

中级会员

积分
942

活字格认证

[已处理] Spread预览

刘君
中级会员   /  发表于:2015-2-4 22:06  /   查看:4712  /  回复:3
Spread 预览窗口中的工具栏可以太难看了,可以隐藏或换成其它方式吗?

3 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2015-2-5 10:13:00
沙发
回复 1楼刘君的帖子

你说的是Spread打印预览?
通过spread的PrintInfo.ShowPrintDialog展示预览的工具栏是不能修改的。

但是可以通过另外一种方式实现你的需求。
spread有自定义的打印方式,就是使用OwnerPrintDraw方法打印,这样子就可以使用微软的PrintPreviewDialog。代码参考如下:
  1.   private System.Drawing.Printing.PrintDocument pd;
  2.         private void Form1_Load(object sender, EventArgs e)
  3.         {        
  4.             this.pd = new System.Drawing.Printing.PrintDocument();
  5.             this.pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.pd_PrintPage);

  6.             PrintDialog printdlg = new PrintDialog();
  7.             PrintPreviewDialog printPrvDlg = new PrintPreviewDialog();

  8.             // preview the assigned document or you can create a different previewButton for it
  9.             printPrvDlg.Document = pd;
  10.             printPrvDlg.ShowDialog(); // this shows the preview and then show the Printer Dlg below
  11.         
  12.         }

  13.         private void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs ev)
  14.         {
  15.             Rectangle rect = new Rectangle(ev.PageBounds.X, ev.PageBounds.Y, ev.PageBounds.Width / 2, ev.PageBounds.Height / 2);
  16.             int cnt = fpSpread1.GetOwnerPrintPageCount(ev.Graphics, rect, 0);
  17.             fpSpread1.OwnerPrintDraw(ev.Graphics, rect, 0, cnt);
  18.             ev.Graphics.DrawString("End of Print Job", new Font("MS Sans Serif", 10), new SolidBrush(Color.Black), new Rectangle(ev.PageBounds.X,
  19.        ev.PageBounds.Y + ev.PageBounds.Height / 2, ev.PageBounds.Width / 2, ev.PageBounds.Height / 2));
  20.             ev.HasMorePages = false;
  21.         }
复制代码


这个时候你可以通过继承微软标准的PrintPreviewDialog,并且自定义一个预览界面,在上面添加按钮或是更改按钮,这就属于你业务逻辑上的需求了,你可以自己写代码实现。网上也会有很多的相关资源。
我能提供的大概思路就是:
  1. public class MyPrintPreviewDialog : PrintPreviewDialog {
  2. public MyPrintPreviewDialog() : base()
  3. {
  4.     Type T = typeof(PrintPreviewDialog);
  5.     FieldInfo fi = T.GetField("toolStrip1", BindingFlags.Instance |
  6.     BindingFlags.NonPublic);
  7. //这就是你需要的工具栏。
  8.     ToolStrip toolStrip1 = (ToolStrip)fi.GetValue(this);
  9. }

  10. }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
刘君
中级会员   /  发表于:2015-2-5 10:56:00
板凳
谢谢
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-2-5 14:55:00
地板
回复 3楼刘君的帖子

不用客气。
欢迎就本次服务质量评分:

评分

参与人数 1满意度 +5 收起 理由
刘君 + 5 OK

查看全部评分

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

葡萄城控件服务团队

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