Winform的技巧瑣碎總結----簡單打印功能實現


一、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()); 
 } 

}

注:文中的代碼大部分引用互聯網上的,本人僅作了總結歸納。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM