C# 打印问题 (RichTextBox) [英] C# Printing Problem (RichTextBox)

查看:33
本文介绍了C# 打印问题 (RichTextBox)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想打印我的 RichTextBox (eintragRichTextBox) 的内容我现在有这个代码:

I want to print the content of my RichTextBox (eintragRichTextBox) I have now this code:

private void druckenPictureBox_Click(object sender, EventArgs e)
{
    PrintDialog printDialog = new PrintDialog();
    PrintDocument documentToPrint = new PrintDocument();
    printDialog.Document = documentToPrint;

    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        StringReader reader = new StringReader(eintragRichTextBox.Text);
        documentToPrint.Print();
        documentToPrint.PrintPage += new PrintPageEventHandler(DocumentToPrint_PrintPage);
    }
}

private void DocumentToPrint_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    StringReader reader = new StringReader(eintragRichTextBox.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.eintragRichTextBox.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();
}

但它总是给我打印一个空白站点 :(.. 任何一个想法,为什么它不起作用?或者有人有更好的代码/想法如何实现打印?

But it always prints me a blank site :(.. Anyone an Idea, why it is not working? Or has someone a better code/Idea how I could achieve the printing?

推荐答案

明白了..

在这个地方:

if (printDialog.ShowDialog() == DialogResult.OK)
{
    StringReader reader = new StringReader(eintragRichTextBox.Text);
    documentToPrint.Print();
    documentToPrint.PrintPage += new PrintPageEventHandler(DocumentToPrint_PrintPage);
}

我改为:

if (printDialog.ShowDialog() == DialogResult.OK)
{
    StringReader reader = new StringReader(eintragRichTextBox.Text);
    documentToPrint.PrintPage += new PrintPageEventHandler(DocumentToPrint_PrintPage);
    documentToPrint.Print();    
}

现在一切正常..

另外,如果有人需要打印 RichTextBox 的内容,你可以使用我的代码..

Also if someone needs to print content of a RichTextBox, you can use my code..

这篇关于C# 打印问题 (RichTextBox)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆