我正在尝试打印一个长列表,首先我测量了字符串,通过它,我防止从页面的左侧溢出但是,我不能在页面的末尾做那件事。它没有通过下一页。我该怎么做 ?代码:
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
答案 0 :(得分:0)
使用Graphics
简单地打印文本不是您的最佳选择。如你所知,你需要处理很多事情。为您的工作选择一个更好的工具。您可以使用大量第三方工具,但如果您更喜欢使用内置工具,请尝试使用RLDC报告。
在工具箱中,在表单上放置Report
和ReportViewer
并隐藏它们。或者,您可以在代码中创建它们,而不是将它们添加到UI中。
接下来,浏览TextBox
中的行(或更好地说明这些行的来源),然后在DataTable
中输入一行。然后将DataTable
分配给DataSource
的{{1}}属性。如果您Report
中的行的来源是TextBox
对象,例如IEnumerable
,则您不需要上述步骤,您可以直接将其分配给List<>
属性DataSource
。
最后,渲染Report
中的Report
并打印出来。