最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#利用PrintDocument定制打印單據(jù)的小例子

 更新時(shí)間:2019年05月30日 09:35:51   作者:Alan.hsiang  
這篇文章主要給大家介紹了關(guān)于C#利用PrintDocument定制打印單據(jù)的小例子,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

本文是利用PrintDocument定制打印單據(jù)的小例子,僅供學(xué)習(xí)分享使用,如果不足之處,還請(qǐng)指正。

涉及知識(shí)點(diǎn):

  • PrintDocument :從 Windows 窗體應(yīng)用程序打印時(shí),定義一種可重用的可發(fā)送到打印機(jī)上的對(duì)象。
  • PrintPreviewControl :表示 Windows 窗體應(yīng)用程序打印預(yù)覽的原始預(yù)覽部分,沒(méi)有任何對(duì)話框或按鈕。
  • Graphics :GDI+繪圖對(duì)象
  • PrinterSettings:設(shè)置打印機(jī)屬性,如:設(shè)置屬性Copies,可以設(shè)置打印份數(shù),默認(rèn)為1,
  • PageSettings:指定應(yīng)用于單頁(yè)打印的設(shè)置
  • DefaultPageSettings:PrintDocument的屬性
  • PrintPage事件:PrintDocument的事件,通過(guò)此事件來(lái)繪制需要打印的內(nèi)容
  • PaperSize:指定紙張大小
  • 毫米和英寸的換算:打印機(jī)是以英寸為單位的,單據(jù)設(shè)置是以毫米為單位的,所以需要轉(zhuǎn)換

效果圖如下:

核心代碼

關(guān)鍵代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DemoPrint
{
 public partial class MainForm : Form
 {
  private int width_p = 200;//單位是mm

  private int height_p = 70;//單位是mm

  private int margin_lr = 2;//左右邊距

  private int margin_tb = 2;//上下邊距

  /// <summary>
  /// 需要打印的內(nèi)容
  /// </summary>
  public List<PrintInfo> PrintInfos { get; set; }

  private PrintHelper printHelper = new PrintHelper();

  public MainForm()
  {
   InitializeComponent();
  }

  private void MainForm_Load(object sender, EventArgs e)
  {
   InitInfo();
   InitDocument();
  }

  private void InitInfo() {
   PrinterSettings printSetting = new PrinterSettings();
   printSetting.PrintRange = PrintRange.AllPages;

  
   int width_in = MM2Inch(width_p);
   int height_in = MM2Inch(height_p);
   PageSettings pageSetting = new PageSettings(printSetting);
   pageSetting.PaperSize = new PaperSize("customer",width_in, height_in);
   
   int margin_lr_in = MM2Inch(margin_lr);
   int margin_tb_in = MM2Inch(margin_tb);
   pageSetting.Margins = new Margins(margin_lr_in, margin_lr_in, margin_tb_in, margin_tb_in);
   this.pdControl.DefaultPageSettings = pageSetting;
  }

  private void InitDocument() {
   List<PrintInfo> lstPrintInfos = new List<PrintInfo>();
   PrintInfo p0 = new PrintInfo()
   {
    PrtType = PrintType.Table,
    PrtColor = Color.Brown,
    Row = int.Parse(this.txtRow.Text.Trim()),
    Column = int.Parse(this.txtColumn.Text.Trim()),
    Start = new Point(int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[1])),
    End = new Point(int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[1]))
    
   };
   lstPrintInfos.Add(p0);
   printHelper.PrintInfos = lstPrintInfos;
  }

  /// <summary>
  /// 轉(zhuǎn)換毫米到百分之一英寸
  /// </summary>
  /// <param name="mm"></param>
  /// <returns></returns>
  private int MM2Inch(int mm) {
   return (int)(mm * 100.0f / 25.4f);
  }

  /// <summary>
  /// 打印開(kāi)始事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void pdControl_BeginPrint(object sender, PrintEventArgs e)
  {

  }

  /// <summary>
  /// 打印事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void pdControl_PrintPage(object sender, PrintPageEventArgs e)
  {
   Font font = new Font("Arial", 14f, FontStyle.Regular);
   Graphics g = e.Graphics;
   g.PageScale = 1;
   g.PageUnit = GraphicsUnit.Millimeter;
   //先畫(huà)一個(gè)矩形
   Pen lineColor = new Pen(Color.Black, 0.2f);
   g.FillRectangle(Brushes.Linen,0,0,width_p,height_p);
   printHelper.Print(g);
  }

  /// <summary>
  /// 打印結(jié)束事件
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void pdControl_EndPrint(object sender, PrintEventArgs e)
  {

  }


  /// <summary>
  /// 打印
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnPrint_Click(object sender, EventArgs e)
  {
   //打印對(duì)話框
   if (this.ptDControl.ShowDialog() == DialogResult.OK)
   {
    this.pdControl.Print();
   }

  }

  private void lblColor_Click(object sender, EventArgs e)
  {
   ColorDialog f = new ColorDialog();
   if (f.ShowDialog() == DialogResult.OK)
   {

    this.lblColor.BackColor = f.Color;
   }
  }

  /// <summary>
  /// 刷新
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  private void btnRefresh_Click(object sender, EventArgs e)
  {
   List<PrintInfo> lstPrintInfos = new List<PrintInfo>();
   //表格配置
   PrintInfo p0 = new PrintInfo()
   {
    PrtType = PrintType.Table,
    PrtColor = Color.Brown,
    Row = int.Parse(this.txtRow.Text.Trim()),
    Column = int.Parse(this.txtColumn.Text.Trim()),
    Start = new Point(int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtStart.Text.Trim(new char[] { '(', ')' }).Split(',')[1])),
    End = new Point(int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtEnd.Text.Trim(new char[] { '(', ')' }).Split(',')[1]))

   };
   lstPrintInfos.Add(p0);
   //標(biāo)題配置
   PrintInfo p1 = new PrintInfo()
   {
    PrtType = PrintType.Text,
    PrtColor = this.lblColor.BackColor,
    Content = this.txtTitle.Text.Trim(),
    Size = int.Parse(this.txtSize.Text.Trim()),
    FontStyle = chkBold.Checked ? FontStyle.Bold : FontStyle.Regular,
    Start = new Point(int.Parse(this.txtLocation.Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(this.txtLocation.Text.Trim(new char[] { '(', ')' }).Split(',')[1]))
   };
   lstPrintInfos.Add(p1);
   //內(nèi)容
   TextBox[] T = new TextBox[12] { T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 };
   TextBox[] L = new TextBox[12] { L1, L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12 };
   for (int i = 0; i < 12; i++)
   {
    PrintInfo p = new PrintInfo()
    {
     PrtType = PrintType.Text,
     PrtColor = Color.Black,
     Content = T[i].Text.Trim(),
     Size = 12,
     FontStyle = FontStyle.Regular,
     Start = new Point(int.Parse(L[i].Text.Trim(new char[] { '(', ')' }).Split(',')[0]), int.Parse(L[i].Text.Trim(new char[] { '(', ')' }).Split(',')[1]))
    };
    lstPrintInfos.Add(p);
   }
   //打印時(shí)間
   PrintInfo p2 = new PrintInfo()
   {
    PrtType = PrintType.Text,
    PrtColor = this.lblColor.BackColor,
    Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
    Size =11,
    FontStyle =FontStyle.Regular,
    Start = new Point(145,63)
   };
   lstPrintInfos.Add(p2);

   printHelper.PrintInfos = lstPrintInfos;
   this.ppVControl.InvalidatePreview();//刷新文檔的預(yù)覽,重新調(diào)用PrintDocument的Print方法
  }
 }
}

源碼鏈接

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • C#中TransactionScope的使用小結(jié)

    C#中TransactionScope的使用小結(jié)

    本篇文章主要是對(duì)C#中TransactionScope的使用方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • VS2013創(chuàng)建Windows服務(wù)與調(diào)試服務(wù)的圖文方法

    VS2013創(chuàng)建Windows服務(wù)與調(diào)試服務(wù)的圖文方法

    這篇文章主要介紹了VS2013創(chuàng)建Windows服務(wù)與調(diào)試服務(wù)的圖文方法,需要的朋友可以參考下
    2017-02-02
  • WinForm子窗體訪問(wèn)父窗體控件的實(shí)現(xiàn)方法

    WinForm子窗體訪問(wèn)父窗體控件的實(shí)現(xiàn)方法

    WinForm子窗體訪問(wèn)父窗體控件的實(shí)現(xiàn)方法,需要的朋友可以參考一下
    2013-03-03
  • C# memcache 使用介紹

    C# memcache 使用介紹

    這篇文章主要介紹了C# memcache 使用介紹,需要的朋友可以參考下
    2015-05-05
  • C# 調(diào)用exe傳參,并獲取打印值的實(shí)例

    C# 調(diào)用exe傳參,并獲取打印值的實(shí)例

    這篇文章主要介紹了C# 調(diào)用exe傳參,并獲取打印值的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • C#中Thread.CurrentThread的用法小結(jié)

    C#中Thread.CurrentThread的用法小結(jié)

    本文主要介紹了C#中Thread.CurrentThread的用法小結(jié),通過(guò)Thread.CurrentThread可以訪問(wèn)和修改當(dāng)前線程的各種屬性和方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • C#編程和Visual Studio使用技巧(上)

    C#編程和Visual Studio使用技巧(上)

    C#是一門(mén)偉大的編程語(yǔ)言,與C++和Java相比,它的語(yǔ)法更簡(jiǎn)單,相對(duì)來(lái)說(shuō)更好入門(mén)。Visual Studio作為.Net平臺(tái)上最重量級(jí)的IDE,也通過(guò)不斷的更新為開(kāi)發(fā)者帶來(lái)更出色的開(kāi)發(fā)體驗(yàn)。本文將介紹10個(gè)C#編程和Visual Studio IDE使用技巧。
    2015-10-10
  • 基于私鑰加密公鑰解密的RSA算法C#實(shí)現(xiàn)方法

    基于私鑰加密公鑰解密的RSA算法C#實(shí)現(xiàn)方法

    這篇文章主要介紹了基于私鑰加密公鑰解密的RSA算法C#實(shí)現(xiàn)方法,是應(yīng)用非常廣泛,需要的朋友可以參考下
    2014-08-08
  • C#實(shí)現(xiàn)會(huì)移動(dòng)的文字效果

    C#實(shí)現(xiàn)會(huì)移動(dòng)的文字效果

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)會(huì)移動(dòng)的文字效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 結(jié)構(gòu)體和聯(lián)合體的區(qū)別及說(shuō)明

    結(jié)構(gòu)體和聯(lián)合體的區(qū)別及說(shuō)明

    文章主要介紹了C語(yǔ)言中的結(jié)構(gòu)體和聯(lián)合體,結(jié)構(gòu)體是一種自定義的復(fù)合數(shù)據(jù)類(lèi)型,可以包含多個(gè)成員,每個(gè)成員可以是不同的數(shù)據(jù)類(lèi)型,聯(lián)合體是一種特殊的數(shù)據(jù)結(jié)構(gòu),可以在內(nèi)存中共享同一段存儲(chǔ)空間來(lái)存儲(chǔ)不同類(lèi)型的數(shù)據(jù)
    2025-01-01

最新評(píng)論

赣州市| 永丰县| 徐汇区| 香港| 马边| 定边县| 聂荣县| 湟源县| 锡林郭勒盟| 沙坪坝区| 潮州市| 海晏县| 阳山县| 巩义市| 常宁市| 磐石市| 石棉县| 密山市| 金阳县| 太湖县| 会宁县| 滨州市| 临沂市| 城市| 湛江市| 山阴县| 浠水县| 普定县| 丰台区| 通化市| 张家界市| 通辽市| 连江县| 东兰县| 察雅县| 新宾| 淮南市| 老河口市| 乌恰县| 溧阳市| 舟山市|