实用指南站
霓虹主题四 · 更硬核的阅读氛围

C#开发入门教程:从零开始写你的第一个打印程序

发布时间:2026-01-17 17:41:13 阅读:6 次

刚学编程那会儿,我最想做的就是让代码干点实在的事。比如,点一下按钮,打印机就吐出一张纸,上面写着我写的文字。这比弹个对话框强多了。C# 就特别适合做这种事,尤其是用 Windows 窗体应用控制打印功能。

准备环境:Visual Studio + .NET

先去官网下载 Visual Studio Community,免费的,装的时候勾选“.NET 桌面开发” workload。装完打开,新建一个项目,选“Windows 窗体应用 (.NET Framework)”或者“.NET”,语言选 C# 就行。

画个简单的界面

拖两个控件到窗体上:一个 TextBox,用来输入要打印的内容;一个 Button,写上“打印”。双击按钮,就会自动生成点击事件的方法,名字通常是 button1_Click。

引入打印命名空间

在代码顶部加上这两句:

using System.Drawing.Printing;
using System.Windows.Forms;

写打印逻辑

在 button1_Click 里面写:

PrintDocument pd = new PrintDocument();
pd.PrintPage += (sender, args) => {
    string text = textBox1.Text;
    Font font = new Font("宋体", 12);
    SolidBrush brush = new SolidBrush(Color.Black);
    args.Graphics.DrawString(text, font, brush, 100, 100);
};
try {
    pd.Print();
} catch (Exception ex) {
    MessageBox.Show("打印失败:" + ex.Message);
}

试试看

输点字,比如“今天学会打印了!”,点按钮。如果电脑连着打印机,它就会打出来。要是没打印机,也可以选择 Microsoft Print to PDF,看看生成的 PDF 长啥样。

加个打印预览

不想每次都真打?加个预览功能。拖一个 PrintPreviewDialog 控件到窗体上,然后改代码:

PrintDocument pd = new PrintDocument();
pd.PrintPage += (sender, args) => {
    args.Graphics.DrawString(textBox1.Text, new Font("宋体", 12),
        Brushes.Black, 100, 100);
};
printPreviewDialog1.Document = pd;
printPreviewDialog1.ShowDialog();

处理换行和分页

打长文本时,内容可能超出一页。可以在 PrintPage 事件里判断位置,设置 args.HasMorePages = true 来分页。比如:

float yPos = 100;
string[] lines = textBox1.Text.Split('\n');
foreach (string line in lines) {
    if (yPos > 800) { // 假设一页最多打到 800 像素
        args.HasMorePages = true;
        return;
    }
    args.Graphics.DrawString(line, new Font("宋体", 12),
        Brushes.Black, 100, yPos);
    yPos += 25;
}
args.HasMorePages = false;

小技巧:调整边距和字体

实际打印时,纸张有边距。可以通过 args.MarginBounds 获取可用区域,别再死盯着 100,100 写。字体也建议让用户选,不然打出来太小或太大都很尴尬。

部署你的程序

右键项目 → 发布,可以生成一个文件夹,把 exe 和依赖都放进去。拷到别的电脑,只要装了对应版本的 .NET,就能运行。别忘了测试打印功能是否正常。