在C#中显示打印预览 [英] Showing Print Preview in C#

查看:104
本文介绍了在C#中显示打印预览的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在,我正在尝试在PrintDocument上构建表单,但是要查看页面上实际出现的位置的唯一方法是打印纸张.它可以工作,但是我需要添加很多东西,我宁愿不要浪费大量纸张.现在我有一个打印对话框,但是没有打印预览按钮.有什么办法让我露面吗?谢谢!

Right now, I'm trying to build my form on a PrintDocument, but the only way for me to see where stuff is actually appearing on the page is to print a paper. It works, but I have a lot of stuff I need to add, and I'd rather not waste tons of paper. Right now I have a print dialogue come up, but theres no print preview button. Is there a way I can make one appear? Thanks!

public partial class Form4 : System.Windows.Forms.Form
    {
        private System.ComponentModel.Container components;
        private System.Windows.Forms.Button printButton;

        public Form4()
        {
            // The Windows Forms Designer requires the following call.
            InitializeComponent();
        }

        // The Click event is raised when the user clicks the Print button. 
        private void printButton_Click(object sender, EventArgs e)
        {
            PrintDocument pd = new PrintDocument();
            pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
            PrintDialog pdi = new PrintDialog();
            pdi.Document = pd;
            if (pdi.ShowDialog() == DialogResult.OK)
            {
                pd.Print();
            }

        }

        // The PrintPage event is raised for each page to be printed. 
        private void pd_PrintPage(object sender, PrintPageEventArgs e)
        {
            Single yPos = 0;
            Single leftMargin = e.MarginBounds.Left;
            Single topMargin = e.MarginBounds.Top;
            Image img = Image.FromFile("logo.bmp");
            Rectangle logo = new Rectangle(40, 40, 50, 50);
            using (Font printFont = new Font("Arial", 20.0f))
            {
                e.Graphics.DrawImage(img, logo);
                e.Graphics.DrawString("Header", printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
            }
            using (SolidBrush blueBrush = new SolidBrush(Color.Black))
            {
                Rectangle rect = new Rectangle(100, 100, 500, 120);
                e.Graphics.FillRectangle(blueBrush, rect);
            }
        }


        // The Windows Forms Designer requires the following procedure. 
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.printButton = new System.Windows.Forms.Button();

            this.ClientSize = new System.Drawing.Size(504, 381);
            this.Text = "Print Example";

            printButton.ImageAlign =
               System.Drawing.ContentAlignment.MiddleLeft;
            printButton.Location = new System.Drawing.Point(32, 110);
            printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
            printButton.TabIndex = 0;
            printButton.Text = "Print the file.";
            printButton.Size = new System.Drawing.Size(136, 40);
            printButton.Click += new System.EventHandler(printButton_Click);

            this.Controls.Add(printButton);
        }

    }

推荐答案

您可以为此使用 PrintPreviewDialog :

private void printButton_Click(object sender, EventArgs e)
{
    PrintDocument pd = new PrintDocument();
    pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);

    PrintDialog printdlg = new PrintDialog();
    PrintPreviewDialog printPrvDlg = new PrintPreviewDialog();

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

    printdlg.Document = pd;

    if (printdlg.ShowDialog() == DialogResult.OK)
    {
        pd.Print();
    }
}

这篇关于在C#中显示打印预览的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆