2014-10-18 63 views
2

我有一個面板有標籤和datagridview。我試圖使用此代碼打印其內容的面板如何在WinFormc#中打印面板?

PrintDialog myPrintDialog = new PrintDialog(); 
     System.Drawing.Bitmap memoryImage = new System.Drawing.Bitmap(panel2.Width, panel2.Height); 
     panel2.DrawToBitmap(memoryImage, panel2.ClientRectangle); 
     myPrintDialog.ShowDialog(); 

      System.Drawing.Printing.PrinterSettings values; 
      values = myPrintDialog.PrinterSettings; 
      myPrintDialog.Document = printDocument1; 
      printDocument1.PrintController = new StandardPrintController(); 
      printDocument1.Print(); 

     printDocument1.Dispose(); 

但它沒有打印任何內容。我刪除了datagridview,但仍然沒有打印任何東西。然後我改變面板的背面顏色,但它再次打印白頁。請親引導我如何做到這一點?

回答

3

這個代碼PrintDocument類對象添加到PrintPage事件並調用Print()方法

private void doc_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    float x = e.MarginBounds.Left; 
    float y = e.MarginBounds.Top; 
    Bitmap bmp = new Bitmap(panel2.Width, panel2.Height); 
    panel2.DrawToBitmap(bmp, new Rectangle(0, 0, panel2.Width, panel2.Height)); 
    e.Graphics.DrawImage((Image)bmp, x, y); 
} 

這樣調用

PrintDocument doc = new PrintDocument(); 
doc.PrintPage += this.doc_PrintPage; 

PrintDialog dlg = new PrintDialog(); 
dlg.Document = doc; 
if (dlg.ShowDialog() == DialogResult.OK) 
{ 
    doc.Print(); 
} 
+1

感謝方法......它的工作現在 – Polowing 2014-10-18 03:57:44