RaUI/Source/RyPrint/frmPrintPreview.cs
2020-11-28 15:03:57 +08:00

117 lines
4.8 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;
namespace RyPrint
{
public partial class frmPrintPreview : Form
{
public frmPrintPreview()
{
InitializeComponent();
}
private PrintDocument m_PrintDoc;
[Description("打印文档")]
public PrintDocument PrintDoc
{
get { return m_PrintDoc; }
set { m_PrintDoc = value; }
}
private int m_TotalPageCount;
[Description("总页数")]
public int TotalPageCount
{
get { return m_TotalPageCount; }
set { m_TotalPageCount = value; }
}
public SmartPrint _SmartPrint = null;
private void frmPrintPreview_Load(object sender, EventArgs e)
{
try
{
m_PrintDoc.PrinterSettings.FromPage = 0;
m_PrintDoc.EndPrint += Print_Doc_EndPrint;
//PaperSize sPSize = new PaperSize("发货清单纸", Convert.ToInt32(clsPram.PageWidth * (decimal)33.375), Convert.ToInt32(clsPram.PageHeight * (decimal)33.375));//267为英寸转厘米为8厘米
//printDocument1.DefaultPageSettings.PaperSize = sPSize;
printPreviewControl1.Document = m_PrintDoc;
printDialog1.Document = m_PrintDoc;
pageSetupDialog1.Document = m_PrintDoc;
printPreviewControl1.Zoom = 1;
this.Text = "打印预览";
}
catch
{
MessageBox.Show("没有安装打印机。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
public void Print_Doc_EndPrint(object sender, PrintEventArgs e)
{
TotalPageCount = _SmartPrint.curPageIndex + 1;
this.Text = "打印预览(共" + (_SmartPrint.curPageIndex+1) + "页,当前第"+ (printPreviewControl1.StartPage+1) + "页)";
}
private void BtnPrint_Click(object sender, EventArgs e)
{
printPreviewControl1.Document.PrinterSettings.FromPage = 0;
printDialog1.AllowSomePages = true;
DialogResult dr = printDialog1.ShowDialog();
if (dr == DialogResult.OK)
{
_SmartPrint.IsPreview = false;
if (printDialog1.PrinterSettings.PrintRange == PrintRange.SomePages)
{
_SmartPrint.curPageIndex = printDialog1.PrinterSettings.FromPage;
_SmartPrint.MaxPage = printDialog1.PrinterSettings.ToPage;
}
else
{
_SmartPrint.curPageIndex = 0;
_SmartPrint.MaxPage = -1;
}
printPreviewControl1.Document.Print();
}
}
private void BtnSetting_Click(object sender, EventArgs e)
{
//frmSettingPrint frm = new frmSettingPrint();
//frm.ShowDialog();
//if (frm.DialogResult == DialogResult.Yes)
//{
//clsPram.LoadPrintSetting(Application.StartupPath + "\\Db\\PrintSetting.dat");
printPreviewControl1.Document.DefaultPageSettings.Landscape = true; //横向打印
//PaperSize sPSize = new PaperSize("发货清单纸", Convert.ToInt32(clsPram.PageWidth * (decimal)33.375), Convert.ToInt32(clsPram.PageHeight * (decimal)33.375));//267为英寸转厘米为8厘米
//printPreviewControl1.Document.DefaultPageSettings.PaperSize = sPSize; //PaperSize sPSize = new PaperSize("快递单", (int)pixelsToInches(image.Width * 100), (int)pixelsToInches(image.Height * 100));
printPreviewControl1.InvalidatePreview();
//}
}
private void BtnPrev_Click(object sender, EventArgs e)
{
if (printPreviewControl1.StartPage > 0)
{
printPreviewControl1.StartPage -= 1;
}
this.Text = "打印预览(共" + (_SmartPrint.curPageIndex + 1) + "页,当前第" + (printPreviewControl1.StartPage + 1) + "页)";
}
private void BtnNext_Click(object sender, EventArgs e)
{
if (printPreviewControl1.StartPage < TotalPageCount - 1)
{
printPreviewControl1.StartPage += 1;
}
this.Text = "打印预览(共" + (_SmartPrint.curPageIndex + 1) + "页,当前第" + (printPreviewControl1.StartPage + 1) + "页)";
}
private void frmPrintPreview_FormClosed(object sender, FormClosedEventArgs e)
{
m_PrintDoc.EndPrint -= Print_Doc_EndPrint;
}
}
}