【问题标题】:How Can I print to next page overflowed string?如何打印到下一页溢出的字符串?
【发布时间】:2018-05-12 04:46:01
【问题描述】:

我正在尝试打印一个长列表,首先我测量了字符串,并通过它防止从页面左侧溢出,但是我无法在页面末尾执行此操作。它没有通过下一页。我该怎么做 ?代码:

    private void button27_Click(object sender, EventArgs e)
    {
        listele();
        printDialog1.Document = printDocument1;
        if (printDialog1.ShowDialog() == DialogResult.OK)
        {
            printDocument1.Print();
        }
    }

    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {

        Font printFont = new Font("Arial", 10);
        Graphics gf = e.Graphics;
        SizeF sf = gf.MeasureString(textBox1.Text,printFont, 320);
        gf.DrawString(textBox1.Text, printFont, Brushes.Black,new RectangleF(new Point(60, 60), sf),StringFormat.GenericTypographic);

    }

我添加了一个屏幕截图以便更好地理解。谢谢SS1

【问题讨论】:

  • 您尝试将文本打印为图片是否有原因?使用适当的工具来完成这项工作,你不会有任何问题。一个不错的选择是使用报告。
  • 不,没有任何原因,只是那是我的第一次打印体验 :) 我试图了解发生了什么 :)

标签: c# database visual-studio printing


【解决方案1】:

引发PrintPage 事件以打印单页。您需要测量您的文本/布局页面。如果您测量的内容超出该页面的容量,则需要将PrintPageEventArgs.HasMorePages 属性设置为true,这将再次调用PrintPage 事件。

您可以跟踪正在打印的页面以及适合该页面的内容。您必须测量文本并根据该页面适合的内容对其进行拆分。

Here is a StackOverflow answer 展示了如何处理多个页面。

【讨论】:

    【解决方案2】:

    使用Graphics 简单地打印文本不是您的最佳选择。正如你所知道的,你需要处理很多事情。为您的工作选择更好的工具。有很多第三方工具可供您使用,但如果您更喜欢使用内置工具,请尝试 RLDC Reports。

    从您的工具箱中,将ReportReportViewer 拖放到您的表单上并将它们隐藏。或者,您可以在代码中创建它们,而不是将它们添加到 UI。

    接下来,检查TextBox 中的行(或者更好的是这些行的来源),然后将它们输入到DataTable 的一栏中。然后将DataTable 分配给ReportDataSource 属性。如果TextBox 中的行源是IEnumerable 对象,如List<>,则不需要上述步骤,可以直接将其分配给ReportDataSource 属性。

    最后,渲染ReportViewer中的Report并打印出来。

    这是Walkthrough: Printing a Local Report without Preview

    【讨论】:

    • 使用 PrintDocument 没有任何问题。你的方法可能行得通,但用户正在尝试学习打印的基础知识。您的回答避免了这种情况。
    • @LarsTech 我并没有说PrintDocument 有什么问题,我只是评论了使用Graphics 来渲染文本,这不是打印的基础之一:)。跨度>
    • 谢谢@LarsTech :) 如您所见,我的代码非常简单。现在这些步骤对我来说有点高级:)
    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2021-02-24
    相关资源
    最近更新 更多