.NET의 PrintDocument, PrintDialog 및 PrintPreviewDialog 클래스를 사용하여 내 응용 프로그램에 대한 인쇄 및 인쇄 미리보기를 성공적으로 구현했습니다.사용자 정의 인쇄 미리보기 대화 상자에서 사용되는 인쇄 미리보기 컨트롤
그러나 내 응용 프로그램은 툴킷을 사용하여 표준 .NET 컨트롤의 모양을 개선합니다. 툴킷에는 대부분의 .NET 컨트롤 버전이 있지만 인쇄 컨트롤에는없는 버전이 있습니다.
따라서 이러한 컨트롤의 모양이 나머지 응용 프로그램과 일치하도록하려면 도구 키트 양식을 기반으로하는 사용자 지정 PrintPreviewDialog를 만들고 .NET PrintPrewviewControl을 포함 시키려고합니다.
내 문제는 PrintPreviewControl이 항상 "표시 할 페이지가 없습니다"라는 것입니다. .NET PrintPreviewDialog를 사용하여이 작업을 수행하는 데 문제가 없었으며 잘못된 작업을 볼 수 없습니다.
이것은 .NET 2.0 PrintPreviewControl이므로 PrintDocument를 할당 한 후 InvalidatePreview()를 호출해야한다는 것을 알고 있습니다. 그것은 내가 그것을 두는 곳 상관하지 않는 것 같습니다 그러나, PrintPage 이벤트 핸들러가
public class PrintEngine
{
...rest of class...
public PrintEngine()
{
m_printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
}
public void PrintPreview()
{
//ORIGINAL CODE USING .NET DIALOG WORK OK
//PrintPreviewDialog dlg1 = new PrintPreviewDialog();
//dlg1.Document = m_printDoc;
//PrepareImageForPrinting();
//dlg1.ShowDialog();
//CODE USING MY CUSTOM DIALOG DO NOT WORK?
MyPrintPreviewDialog dlg2 = new MyPrintPreviewDialog();
dlg2.Document = m_printDoc;
PrepareImageForPrinting(); //Creates the m_printImage List
dlg2.ShowDialog();
}
private void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawImage(m_printImages[m_currentPage], new Point(0, 0));
m_currentPage++;
e.HasMorePages = m_currentPage < m_pagesHigh;
}
}//end PrintEngine class
public class MyPrintPreviewDialog : KryptonForm
{
public PrintDocument Document
{
get { return m_printPreviewControl.Document; }
set
{
m_printPreviewControl.Document = value;
m_printPreviewControl.InvalidatePreview();
}
}
public MyPrintPreviewDialog()
{
InitializeComponent();
m_printPreviewControl = new PrintPreviewControl();
m_printPreviewControl.StartPage = 0;
}
private void MyPrintPreviewDialog_Load(object sender, EventArgs e)
{
m_printPreviewControl.Document.DefaultPageSettings = new PageSettings();
m_printPreviewControl.Document.PrinterSettings = new PrinterSettings();
m_printPreviewControl.InvalidatePreview();
}
}//end MyPrintPreviewDialog class
어쨌든, 어리 석다. 그것은 다른 시험에서 남겨 두었습니다. 네가 말하는 것처럼 거기에 없어. 그것과 모든 작품을 제거했습니다. 눈의 두 번째 쌍은 종종 필요한 모든 것입니다! 건배. – Kildareflare