PrintDialog 打印对话框

PrintDialog 打印对话框

PrintDialog 是一个用来选择打印机和设置打印参数的对话框。

该控件需要结合其他打印相关控件一起使用。

示例:打印文本框内容

添加一个文本框用于输入内容,再添加三个按钮分别用于”打印设置”、”打印预览”和”打印”。

拖拽以下三个控件到窗体:

  • PrintDialog — 打印对话框
  • PrintDocument — 打印文档对象
  • PrintPreviewDialog — 打印预览对话框

PrintDocument 代表要打印的文档内容,设置它的 PrintPage 事件来定义实际打印的内容。该对象会发送给打印机执行打印。

如果没有物理打印机,可以安装虚拟打印机(如 Microsoft Print to PDF、Microsoft XPS Document Writer)进行测试。

打印设置

// 打印设置按钮
private void button1_Click(object sender, EventArgs e)
{
    this.printDialog1.Document = this.printDocument1;
    this.printDialog1.ShowDialog();
}Code language: JavaScript (javascript)

打印

// 打印按钮
private void button3_Click(object sender, EventArgs e)
{
    if (this.printDialog1.ShowDialog() == DialogResult.OK)
    {
        this.printDocument1.Print();
    }
}Code language: JavaScript (javascript)

设置打印内容

// printDocument1 的 PrintPage 事件
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    Font font = new Font("宋体", 12);
    Brush bru = Brushes.Blue;
    //   x: 所绘制文本的左上角的 x 坐标
    //   y: 所绘制文本的左上角的 y 坐标
    e.Graphics.DrawString(this.textBox1.Text, font, bru, this.textBox1.Location.X, this.textBox1.Location.Y);
}Code language: JavaScript (javascript)

除了打印文字,还可以通过 e.Graphics 绘制图片、图形、表格等。

// 打印图片示例
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    Image img = Image.FromFile(@"C:\test.png");
    e.Graphics.DrawImage(img, 10, 10);
}Code language: JavaScript (javascript)

打印预览

// 打印预览按钮
private void button2_Click(object sender, EventArgs e)
{
    this.printPreviewDialog1.Document = this.printDocument1;
    this.printPreviewDialog1.ShowDialog();
}Code language: JavaScript (javascript)

常用属性

属性/控件说明
PrintDialog.Document关联的 PrintDocument 对象
PrintDialog.PrinterSettings打印机设置(打印机名称、份数、纸张等)
PrintDocument.DocumentName打印文档名称(显示在打印队列中)
PrintPreviewDialog.Document关联要预览的 PrintDocument

常用事件

事件说明
PrintDocument.PrintPage每打印一页时触发,在此设置打印内容
PrintDocument.BeginPrint打印开始前触发
PrintDocument.EndPrint打印结束后触发

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注