C# “打印预览显示”;文件中不包含任何页面“;而不是文件
我正在尝试在VS2013中设置一个应用程序,包括页面设置、打印预览和打印。我遇到的问题不是在打印预览窗口中看到页面,而是“文档不包含任何页面”。我在Internet上找到的所有内容都与打开文件并打印/预览有关。我希望能够在富文本框中打印/预览未保存的文本 以下是我所拥有的:C# “打印预览显示”;文件中不包含任何页面“;而不是文件,c#,C#,我正在尝试在VS2013中设置一个应用程序,包括页面设置、打印预览和打印。我遇到的问题不是在打印预览窗口中看到页面,而是“文档不包含任何页面”。我在Internet上找到的所有内容都与打开文件并打印/预览有关。我希望能够在富文本框中打印/预览未保存的文本 以下是我所拥有的: PageSetupDialog psdlg = new PageSetupDialog(); PrintDialog pdlg = new PrintDialog(); PrintPreviewDialog ppdlg =
PageSetupDialog psdlg = new PageSetupDialog();
PrintDialog pdlg = new PrintDialog();
PrintPreviewDialog ppdlg = new PrintPreviewDialog();
PrintDocument pd = new PrintDocument();
事件处理程序:
private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e)
{
psdlg.PrinterSettings = new System.Drawing.Printing.PrinterSettings();
psdlg.PageSettings = new System.Drawing.Printing.PageSettings();
psdlg.EnableMetric = false;
psdlg.ShowNetwork = true;
pd.PrinterSettings = psdlg.PrinterSettings;
psdlg.ShowDialog();
if (psdlg.PageSettings != null)
{
pd.DefaultPageSettings = psdlg.PageSettings;
}
}
private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)
{
if (ppdlg.ShowDialog() == DialogResult.OK)
{
pd.DocumentName = strCurrentFile;
ppdlg.Document = pd;
}
}
private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
if(printDialog1.ShowDialog() == DialogResult.OK)
{
pd.PrintPage += new PrintPageEventHandler (pd_PrintPage);
pd.Print();
}
}
PrintPage事件处理程序:
private void DocumentToPrint_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
StringReader reader = new StringReader(rtbMain.Text);
float LinesPerPage = 0;
float YPosition = 0;
int Count = 0;
float LeftMargin = e.MarginBounds.Left;
float TopMargin = e.MarginBounds.Top;
string Line = null;
Font PrintFont = this.rtbMain.Font;
SolidBrush PrintBrush = new SolidBrush(Color.Black);
LinesPerPage = e.MarginBounds.Height / PrintFont.GetHeight(e.Graphics);
while (Count < LinesPerPage && ((Line = reader.ReadLine()) != null))
{
YPosition = TopMargin + (Count * PrintFont.GetHeight(e.Graphics));
e.Graphics.DrawString(Line, PrintFont, PrintBrush, LeftMargin, YPosition, new StringFormat());
Count++;
}
if (Line != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
PrintBrush.Dispose();
}
private void DocumentToPrint\u PrintPage(对象发送方,System.Drawing.Printing.PrintPageEventArgs e)
{
StringReader=新的StringReader(rtbMain.Text);
float LinesPerPage=0;
浮动位置=0;
整数计数=0;
浮动左边距=e.MarginBounds.Left;
浮动顶部边距=e.MarginBounds.Top;
字符串行=null;
Font PrintFont=this.rtbMain.Font;
SolidBrush PrintBrush=新的SolidBrush(颜色为黑色);
LinesPerPage=e.MarginBounds.Height/PrintFont.GetHeight(e.Graphics);
而(Count
您是否在任何地方处理PrintPage
事件?如果是这样,您需要包含该代码。如果没有,那么……你应该这样做。你的问题中仍然没有任何东西显示该方法订阅了该事件的位置。