private void printPreviewMenuItem_Click(object sender, System.EventArgs e)
{
this.printPreviewDialog.Document = ((ChildForm)this.ActiveMdiChild).PrintDoc;
this.printPreviewDialog.Document.PrinterSettings = this.printerSettings;
this.printPreviewDialog.Document.DefaultPageSettings = this.pageSettings;
this.printPreviewDialog.DesktopLocation = this.Location;
this.printPreviewDialog.DesktopLocation.Offset(100, 100);
this.printPreviewDialog.ShowDialog(((ChildForm)this.ActiveMdiChild));
}上面的代码只调出了printPreviewDialog,就显示一张白纸,应该怎么办啊?
{
this.printPreviewDialog.Document = ((ChildForm)this.ActiveMdiChild).PrintDoc;
this.printPreviewDialog.Document.PrinterSettings = this.printerSettings;
this.printPreviewDialog.Document.DefaultPageSettings = this.pageSettings;
this.printPreviewDialog.DesktopLocation = this.Location;
this.printPreviewDialog.DesktopLocation.Offset(100, 100);
this.printPreviewDialog.ShowDialog(((ChildForm)this.ActiveMdiChild));
}上面的代码只调出了printPreviewDialog,就显示一张白纸,应该怎么办啊?
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{ // 打印信息处理,若没此函数将无法实现打印(无法指定打印页面的一切属性),每打印一页发生一次
// 获得绘制对象
Graphics g = e.Graphics;
// 一页中的行数
float LinesOfPage = 0;
// 绘制文本的纵向坐标
float YPos = 0;
// 行计数
int count = 0;
// 左边界
float LeftMargin = e.MarginBounds.Left;
// 顶边界
float TopMargin = e.MarginBounds.Top;
// 字符串流
string line = null;
// 根据页面的高度和字体的高度决定该页可以打印的行数
LinesOfPage = e.MarginBounds.Height / this.Font.GetHeight(g); // 获取该绘图环境的字体高度
StringReader MySReader = new StringReader(this.richTextBox1.Text);
// 每次从文件中读取一行并打印
while((count < LinesOfPage) && ((line = MySReader.ReadLine()) != null))
{
// 计算这一行的显示位置
YPos = TopMargin + (count * this.Font.GetHeight(g));
// 绘制文本
g.DrawString(line,this.Font,Brushes.Black,LeftMargin,YPos,new StringFormat());
// 行数添加
count ++ ;
}
// 如果是多行,则另外打印一页
if(line != null)
e.HasMorePages = true; // 多页,触发下一次PrintPage事件
else e.HasMorePages = false;
}