2012-06-12 2 views
0

모두에게 좋은 날, 직원의 일일 시간 기록에 대한 보고서를 만드는 응용 프로그램이 있습니다. 인쇄 미리보기 대화 상자의 모든 페이지가 인쇄 할 때 사용할 수있는 모든 페이지를 덮어 쓰는 것이 문제입니다. 어떻게 이런 종류의 문제를 해결할 수 있을까요? 페이지 1의 내용은 페이지 1 용이고 페이지 2는 페이지 2 용이고 내용은 반대입니다. 이 다음은 인쇄에 대한 내 코드입니다 :C# 인쇄 할 때 이전 페이지 덮어 쓰기

private void simpleButtonOk_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      countPage = 0; 
      CoolPrintPreviewDialog printPreview = new CoolPrintPreviewDialog(); 
      PrintDocument doc = new PrintDocument(); 
      doc.PrintPage += new PrintPageEventHandler(doc_PrintPage); 
      printPreview.Document = doc; 
      Form p = (Form)printPreview; 
      p.WindowState = FormWindowState.Maximized; 
      p.ShowDialog(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

    void doc_PrintPage(object sender, PrintPageEventArgs e) 
    { 
     try 
     { 
      for (int i = 1; i <= countEmployee; i++) 
      { 
       Font fontName = new Font("Calibri", 12, FontStyle.Bold); 
       Font fontPosition = new Font("Calibri", 12, FontStyle.Regular); 
       Brush colorBrush = new SolidBrush(Color.Black); 

       e.Graphics.DrawString(empName, fontName, colorBrush, new Point(80, 120)); 
       e.Graphics.DrawString(empPosition, fontPosition, colorBrush, new Point(80, 140)); 
       e.Graphics.DrawString(empId, fontPosition, colorBrush, new Point(680, 120)); 
       DataManipulation.PrintSelectEmployeeByMonth(i, e, comboBoxMonth, comboBoxYear, comboBoxDayFrom, comboBoxDayTo); 
       countPage++; 
       MessageBox.Show(countPage.ToString()); 
      } 
      if (countPage <= countEmployee) 
      { 
       e.HasMorePages = true; 
      } 
      else 
      { 
       e.HasMorePages = false; 
      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

답변

1

PrintPage 이벤트가 각 페이지에 대해 한 번 발생합니다; for 루프는 이벤트가 발생할 때마다 모든 페이지를 인쇄하려고한다고 제안합니다.

for 루프를 제거하고 인덱스 변수 i을 현재 페이지 번호를 추적하는 데 사용할 수있는 인스턴스 수준 변수로 승격해야합니다.

나머지 코드는 정확합니다. 이벤트가 해고 될 때까지 계속 더 많은 페이지를 요청해야합니다 countEmployee 번.

+0

도움 주셔서 감사합니다. :) – Sephiroth111