C#小结:Winform中打印控件的用法和小结

一、需求

用户点击打印后,弹出打印预览,用户关闭预览框后,询问是否打印,如果要打印则弹出打印框。(备注:打印内容只能是自定义的字符串,不支持指定文件夹打印)

二、实现代码

cs 复制代码
using System.Drawing.Printing;

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 触发打印预览按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            PrintPreview();
        }

        #region 打印相关方法
        /// <summary>
        /// 打印预览
        /// </summary>
        private void PrintPreview()
        {
            PrintDocument printDocument = new PrintDocument();
            printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);

            PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
            printPreviewDialog.Document = printDocument;

            // 确认关闭预览框后
            if (printPreviewDialog.ShowDialog() == DialogResult.Cancel)
            {
                // 询问用户是否打印
                if (MessageBox.Show("您确定要打印吗?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    PrintContents();//弹出打印框
                }

            }
        }
        /// <summary>
        /// 弹出打印框
        /// </summary>
        private void PrintContents()
        {
            PrintDialog printDialog = new PrintDialog();
            if (printDialog.ShowDialog() == DialogResult.OK)
            {
                PrintDocument printDocument = new PrintDocument();
                printDocument.PrinterSettings = printDialog.PrinterSettings;
                printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);//打印对应的内容
                printDocument.Print();
            }
        }
        /// <summary>
        /// 打印内容
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.DrawString("Hello, World!", new Font("Arial", 12), Brushes.Black, 100, 100);
        }
        #endregion

    }
}

三、代码小结

  1. 按钮点击事件button1_Click 方法触发 PrintPreview 方法。
  2. 打印预览PrintPreview 方法创建一个 PrintDocument 对象并设置其 PrintPage 事件处理程序。然后显示 PrintPreviewDialog,供用户预览打印内容。
  3. 确认打印 :如果用户在预览对话框中点击了关闭,则弹出确认对话框询问是否打印。如果用户确认,则调用 PrintContents 方法。
  4. 弹出打印框PrintContents 方法显示 PrintDialog 供用户选择打印机和设置。如果用户确认,则重新创建 PrintDocument 对象,并设置打印机设置,最后调用 Print 方法进行打印。
  5. 打印内容PrintDocument_PrintPage 方法定义了实际的打印内容,这里只是简单地打印 "Hello, World!"。
相关推荐
飞飞-躺着更舒服21 分钟前
【QT】实现电子飞行显示器(改进版)
开发语言·qt
武昌库里写JAVA37 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
c++------------------函数
开发语言·c++
程序员_三木1 小时前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
是小崔啊2 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴
tianmu_sama2 小时前
[Effective C++]条款38-39 复合和private继承
开发语言·c++
黄公子学安全2 小时前
Java的基础概念(一)
java·开发语言·python
liwulin05062 小时前
【JAVA】Tesseract-OCR截图屏幕指定区域识别0.4.2
java·开发语言·ocr