我正在使用以下代码从富文本框中打印字符串的集合:
private void printBtn_Click(object sender, EventArgs e)
{
PrintDocument p = new PrintDocument();
p.OriginAtMargins = true;
Margins pMargins = new Margins(100, 100, 100, 100);
p.DefaultPageSettings.Margins = pMargins;
p.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
{
e1.Graphics.DrawString(summaryBox.Text, new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(0, 0, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
};
try
{
p.Print();
this.Close();
}
catch (Exception ex)
{
throw new Exception("Error During Printing", ex);
}
}
但是,长字符串会被切断并且不会自动消失。字符串在右侧截断,并且在第一页填充后,不会打印第二页,并且仅忽略剩余的内容。打印机设置或富文本框或两者都有问题吗?如果内容太长,如何确定长字符串换行并打印第二页或第三页?
答案 0 :(得分:1)
您需要使用PrintPageEventArgs.MarginBounds来获取打印页面中的可打印区域。
现在,您的e1
是类型PrintPageEventArgs
的参数。并且您将获得MarginBounds
之类的e1.MarginBounds
。
这样您的代码就可以了。
p.PrintPage += delegate (object sender1, PrintPageEventArgs e1)
{
e1.Graphics.DrawString(summaryBox.Text, new Font("Times New Roman", 12), new SolidBrush(Color.Black), new RectangleF(0, 0, e1.MarginBounds.Width, e1.MarginBounds.Height));
};