Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “打印预览显示”;文件中不包含任何页面“;而不是文件_C# - Fatal编程技术网

C# “打印预览显示”;文件中不包含任何页面“;而不是文件

C# “打印预览显示”;文件中不包含任何页面“;而不是文件,c#,C#,我正在尝试在VS2013中设置一个应用程序,包括页面设置、打印预览和打印。我遇到的问题不是在打印预览窗口中看到页面,而是“文档不包含任何页面”。我在Internet上找到的所有内容都与打开文件并打印/预览有关。我希望能够在富文本框中打印/预览未保存的文本 以下是我所拥有的: PageSetupDialog psdlg = new PageSetupDialog(); PrintDialog pdlg = new PrintDialog(); PrintPreviewDialog ppdlg =

我正在尝试在VS2013中设置一个应用程序,包括页面设置、打印预览和打印。我遇到的问题不是在打印预览窗口中看到页面,而是“文档不包含任何页面”。我在Internet上找到的所有内容都与打开文件并打印/预览有关。我希望能够在富文本框中打印/预览未保存的文本

以下是我所拥有的:

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
事件?如果是这样,您需要包含该代码。如果没有,那么……你应该这样做。你的问题中仍然没有任何东西显示该方法订阅了该事件的位置。