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!"。
相关推荐
pianmian1几秒前
arcgis几何与游标(1)
开发语言·python
-曾牛2 分钟前
【LangChain4j快速入门】5分钟用Java玩转GPT-4o-mini,Spring Boot整合实战!| 附源码
java·开发语言·人工智能·spring boot·ai·chatgpt
月之圣痕13 分钟前
c#清理释放内存
c#
nanzhuhe20 分钟前
python中参数前**的含义
开发语言·python
wt_cs24 分钟前
身份认证C#集成方案-数字时代身份证实名认证利器
开发语言·c#
ghost1431 小时前
Python自学第2天:条件语句,循环语句
开发语言·python·学习
Chandler241 小时前
Go:低级编程
开发语言·后端·golang
^_^ 纵歌1 小时前
用python比较两个mp4是否实质相同
开发语言·python·音频·视频
一直走下去-明1 小时前
使用python帮助艺术家完成角色动画和服装模型等任务
开发语言·图像处理·pytorch·python·opencv·ai作画
长流小哥2 小时前
Linux网络编程实战:从字节序到UDP协议栈的深度解析与开发指南
linux·c语言·开发语言·网络·udp