狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#使用 WinForms 實現打印基礎操作

admin
2024年7月25日 0:43 本文熱度 1275

在Windows應用程序中,打印是一個常見的需求。C#的WinForms提供了完備的打印支持,通過一些類和控件可以輕松實現打印功能。本篇文章將詳細介紹在WinForms中實現打印的基本操作。

引入打印所需的命名空間

為了使用打印功能,我們需要引入一些特定的命名空間:

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

打印預覽控件

在開始打印之前,通常會提供一個預覽功能讓用戶確認打印內容是否正確。WinForms提供了PrintPreviewControlPrintPreviewDialog兩個控件用于打印預覽。

public partial class Form1 : Form{    PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();    PrintDocument printDocument = new PrintDocument();    public Form1()    {        InitializeComponent();    }    private void btnPrint_Click(object sender, EventArgs e)    {        // 綁定事件        printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);
       // 設置文件源        printPreviewDialog.Document = printDocument;
       ShowPrintPreview();
   }
   private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)    {        e.Graphics.DrawString("Hello, World!", new Font("Arial", 20), Brushes.Black, new PointF(100, 100));    }
   private void ShowPrintPreview()    {        printPreviewDialog.ShowDialog();    }}

基本的打印操作

打印操作的核心是PrintDocument類,通過它可以控制打印的內容和格式。

private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e){    e.Graphics.DrawString("Hello, World!", new Font("Arial", 20), Brushes.Black, new PointF(100, 100));}
private void Print(){    PrintDocument printDocument = new PrintDocument();    printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);    printDocument.Print();}

以上代碼將在打印紙上繪制一行“Hello, World!”的文本。

高級的打印設置

使用打印對話框

可以通過PrintDialog讓用戶選擇打印機、設置頁邊距等打印選項。

private void PrintWithDialog(){    PrintDocument printDocument = new PrintDocument();    PrintDialog printDialog = new PrintDialog();
   printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);
   printDialog.Document = printDocument;
   if (printDialog.ShowDialog() == DialogResult.OK)    {        printDocument.Print();    }}

設置打印頁面的屬性

可以通過PageSettingsPrinterSettings設置打印頁面的詳細屬性。

private void SetPageSettings(PrintDocument printDocument){    // 設置頁面方向    printDocument.DefaultPageSettings.Landscape = true;
   // 設置頁邊距    printDocument.DefaultPageSettings.Margins = new Margins(50, 50, 50, 50);
   // 設置打印紙張大小    printDocument.DefaultPageSettings.PaperSize = new PaperSize("A4", 210, 297);}

實際案例

假設我們有一個WinForms程序,需要打印一個列表中的多個項,并支持分頁。以下是一個完整的例子:

using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Printing;using System.Windows.Forms;
namespace Printer{    public partial class Form1 : Form    {        private List<string> itemsToPrint; // 打印內容列表        private int printPageIndex; // 當前打印的頁碼
       public Form1()        {            InitializeComponent();
           // 初始化打印內容            itemsToPrint = new List<string>();            for (int i = 1; i <= 50; i++)            {                itemsToPrint.Add($"Item {i}"); // 添加50個打印項目            }        }
       // 打印按鈕的點擊事件處理函數        private void PrintButton_Click(object sender, EventArgs e)        {            // 創建打印文檔對象            PrintDocument printDocument = new PrintDocument();            // 訂閱PrintPage事件,這個事件在每次需要生成打印頁時觸發            printDocument.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);
           // 創建打印對話框對象,并將打印文檔關聯到對話框            PrintDialog printDialog = new PrintDialog            {                Document = printDocument            };
           // 顯示打印對話框,如果用戶確認打印,則開始打印            if (printDialog.ShowDialog() == DialogResult.OK)            {                // 初始化打印頁碼                printPageIndex = 0;                // 開始打印                printDocument.Print();            }        }
       // 打印文檔的PrintPage事件處理函數        private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)        {            int itemsPerPage = 10; // 每頁打印項目數            int itemIndex = printPageIndex * itemsPerPage; // 當前頁起始項目索引            int yPosition = e.MarginBounds.Top; // 當前打印位置的Y坐標
           // 逐行打印項目,直到頁面下邊界或者打印完所有項目            while (itemIndex < itemsToPrint.Count && yPosition < e.MarginBounds.Bottom)            {                // 在頁面上繪制字符串                e.Graphics.DrawString(itemsToPrint[itemIndex], new Font("Arial", 14), Brushes.Black, new PointF(e.MarginBounds.Left, yPosition));                yPosition += 30; // 移動到下一行                itemIndex++;            }
           // 更新頁碼            printPageIndex++;
           // 檢查是否有更多頁需要打印            if (itemIndex < itemsToPrint.Count)            {                e.HasMorePages = true; // 還有更多頁            }            else            {                e.HasMorePages = false; // 沒有更多頁            }        }    }}

總結

本文介紹了在WinForms中實現打印的基本操作,包括打印預覽、基本打印、打印對話框使用以及高級設置。同時,通過一個具體的例子展示了打印多個項并支持分頁的實現方式。希望這篇文章能夠幫助你更好地理解和使用WinForms的打印功能。


該文章在 2024/7/25 0:43:27 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved