2014-04-11 2 views
0

양식을 인쇄하려고합니다. (상단에 다른 표 레이 아웃 패널에 4 개의 colomns가있는 tablelauyout이 있는데 그 위에 인쇄 할 레이블이 있습니다.) 그러나 빈 페이지 만 가져옵니다.양식을 출력하는 중

public void PrintPanel() 
    { 
     PrintDocument printdoc = new PrintDocument(); 
     PrintDialog myPrintDialog = new PrintDialog(); 
     memoryImage = new Bitmap(this.Width, this.Height); 
     this.tableLayoutPanel1.DrawToBitmap(memoryImage, this.ClientRectangle); 
     if (myPrintDialog.ShowDialog() == DialogResult.OK) 
     { 
      printdoc.PrintPage += printdoc_PrintPage; 
      System.Drawing.Printing.PrinterSettings values; 
      values = myPrintDialog.PrinterSettings; 
      myPrintDialog.Document = printdoc; 
      printdoc.PrintController = new StandardPrintController(); 
      printdoc.Print(); 
     } 
     memoryImage.Dispose(); 
     printdoc.Dispose(); 
    } 

    void printdoc_PrintPage(object sender, PrintPageEventArgs e) 
    { 
     e.Graphics.DrawImage(memoryImage, 10, 10); 
    } 

그래서 'memoryImage'를 폴더에 저장했지만 이것도 비어 있습니다. 그래서 내가 잘못 생각한 것입니까? 양식을 표시 할 때 .Show()으로 양식이 호출되지 않습니다. 코드가 올바르게 인쇄되지만 사용자가이를 보지 못하도록하고 싶습니다.

+0

아직 렌더링되지 않은 양식을 인쇄하려고합니다. 맞습니까? 가능한 의심. 아마도 그것을 보여 주지만 불가능한 오프 스크린 위치로 옮기겠습니까? 'this.Location = new Point (-2000, -2000)'또는 그런 것. 목표에 대한 자세한 내용은 더 나은 솔루션을 찾는 데 도움이 될 수 있습니다. – DonBoitnott

+0

지금은 어떻게 양식을 표시하고 그것을 숨길 수 있습니까?하지만 printdialog가 화면을 튕겨 내면 화면이 고르지 않게되므로 피할 수있는 방법이 있기를 바랍니다. 그렇지 않으면 사용자는 익숙해 져야합니다. – Cageman

답변

0

PrintDocument 컨트롤을 가져 와서 양식에 배치하고 printDocument1_PrintPage 이벤트로 호출하십시오.

Bitmap img; 

private void btnPrintForm_Click(object sender, EventArgs e) 
{ 
    CaptureScreen(); 
    printDocument1.Print(); 
    printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage); 
} 

private void CaptureScreen() 
{ 
    Graphics g = this.CreateGraphics(); 
    Size s = this.Size; 
    img = new Bitmap(s.Width, s.Height, g); 
    Graphics mg = Graphics.FromImage(img); 
    mg.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s); 
} 

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
{ 
    e.Graphics.DrawImage(img, 0, 0); 
} 
관련 문제