2010-02-04 2 views
2

PrintDocument에 여러 페이지를 작성하고 PrintPreviewControl 내에 표시하는 데 문제가 있습니다. 나는 하나의 페이지를 충분히 쉽게 만들 수 있지만, 여러 페이지를 함께 묶어서 나에게 나타나지 않는다.PrintPreviewControl의 PrintDocument의 모든 페이지 표시

GDI를 사용하여 여러 페이지의 페이지를 그릴 예정이지만 예상대로 작동하지 않습니다.

private PrintDocument doc = new PrintDocument(); 
private string[] printMe = new string[]{ "page1", "page2", "page3"); 
private int pageCount = 0; 

private void FormLoad(object sender, EventArgs e) 
{ 
doc.PrintPage += new PrintPageEventHandler(PrintPage); 
PrintPreviewControl.Document = doc; 
} 

private void doc_BeginPrint(object sender, PrintEventArgs e){ pageCount = 0; } 

private void PrintPage(object sender, PrintPageEventArgs e) 
{ 
Graphics g = e.Graphics; 
g.DrawString(drawMe[pageCount++], "Lucida Console", Brushes.Black, new Point(20,20)); 

e.HasMorePages = (pageCount printMe.Length); 
}

3 개의 별도 페이지가 만들어져 PrintPreview 컨트롤에 표시된다는 아이디어가 있습니다. 내가 뭘 놓치고 있니?

답변

0

코드 스 니펫은 e.HasMorePages를 할당하는 중요한 지점에서 정확히 맹 글링되었습니다. 코드에 눈에 띄는 문제가 있습니다. BeginPrint 이벤트 처리기를 구현하여 페이지 카운터를 다시 0으로 재설정해야합니다.

+0

내가 '값으로,의 등록 창의 레이아웃 섹션에서 찾을 및/또는 행동 섹션에있는 Rows 특성, 그런 EventHandler를 추가했지만 여전히 PrintPreviewControl의 첫 페이지 만 표시합니다. "PrintPage"기능은 세 번 실행되지만 "page1"문자열을 포함하는 페이지 만 표시됩니다. 새 페이지를 추가하는 방법을 알아낼 수 없습니다. – KarlHungus

+0

나는 몰라, 당신은 당신의 발췌 문장을 고치지 않았다. 확실하게 : 미리보기 대화 상자에서 페이지 번호 선택기를 올바르게 사용하고 있습니까? 도구 모음의 오른쪽 상단. –

+0

그것은 확실히 일했다, 고마워한다; 그러나 모든 페이지를 함께 표시하는 방법이 있습니까? 세 개의 페이지를 모두 PrintPreviewControl에 연속적으로 표시하는 방법이 있습니까? – KarlHungus

0

기본적으로 모든 페이지를 표시하는 방법은 잘 모르지만 둘 이상의 페이지를 표시 할 수는 있습니다. Columns 속성을 설정하여 PrintPreviewControl에 이상 1

관련 문제