一、C#實現打印功能操作通常包括以下四個功能。
1、打印設置 設置打印機的一些參數比如更改打印機驅動程序等。
2、頁面設置 設置頁面大小紙張類型等。
3、打印預覽 類似於word中的打印預覽。
4、打印。下面就向你具體介紹操作的步驟。
二、實現打印功能的步驟
第一步:(添加事件):若實現打印功能首先構造PrintDocument對象添加打印事件:
PrintDocument printDocument;
private void InitializeComponent()
{
printDocument=new PrintDocument();
printDocument.PrintPage += new PrintPageEventHandler (this.printDocument_PrintPage);
}
第二步:實現第一步的的事件委托方法(printDocument_PrintPage)
實現此方法過程中用到了StringReader類,必須先定義,private StringReader LineReader = null; //字符串流對象,一行一行讀取文本
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics; //獲得繪圖對象
float linesPerPage = 0; //頁面的行號
float yPosition = 0; //繪制字符串的縱向位置
int count = 0; //行計數器
float leftMargin = e.MarginBounds.Left; //左邊距
float topMargin = e.MarginBounds.Top; //上邊距
string line = null; //行字符串
Font printFont = this.richTextBox1.Font; //當前的打印字體
SolidBrush myBrush = new SolidBrush(Color.Black);//刷子
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(g); //每頁可打印的行數
//逐行的循環打印一頁
while (count < linesPerPage && ((line = LineReader.ReadLine()) != null))
{
yPosition = topMargin + (count * printFont.GetHeight(g));
g.DrawString(line, printFont, myBrush, leftMargin, yPosition, new StringFormat());
count++;
}
if (line != null)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
第三步:打印設置功能的實現
打印設置,構造打印對話框,將對話框中設置的Document屬性賦給printDocument這樣會將用戶的設置自動保存到printDocument的PrinterSettings屬性中
protectedvoid FileMenuItem_PrintSet_Click( object sender,EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
printDialog.ShowDialog();
}
第四步:打印預覽功能實現
此功能和打印設置原理相同,調出printPreviewDialog對話框即可,但值得注意的是必須實例化StringReader對象,lineReader = new StringReader(textBox.Text)。
protected void FileMenuItem_PrintView_Click( object sender,EventArgs e)
{
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
printPreviewDialog.Document = printDocument;
lineReader = new StringReader(textBox.Text);
try
{
printPreviewDialog.ShowDialog();
}
catch(Exception excep)
{
MessageBox.Show(excep.Message,"打印預覽出錯", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
第五步:就是打印功能的實現,和打印預覽注意的地方一樣注意實例化StringReader對象
protected void FileMenuItem_Print_Click(object sender,EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
lineReader = new StringReader(textBox.Text);
if (printDialog.ShowDialog() == DialogResult.O
{
try
{
printDocument.Print();
}
atch(Exception excep)
{
MessageBox.Show(excep.Message, "打印出錯",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
printDocument.PrintController.OnEndPrint(new PrintEventArgs());
}
}
}
注:文中的代碼大部分引用互聯網上的,本人僅作了總結歸納。