c# - PrintPreviewDialog 仅显示 1 页的项目数少于正在打印的项目数
问题描述
我想查看 100 个项目到PrintPreviewDialog
. 为此,我使用构建字符串Stringbuilder
,然后设置它们的字体大小并启动PrintPreviewDialog
。此时,程序工作正常,但并非所有 100 个项目都显示在PrintPreviewDialog
中,它只显示 32 个项目和 1 页。请告诉我如何将所有项目显示为一页或多页。
for (int i = 0; i < 100; i++)
{
Item item = new Item()
{
Code = i.ToString(),
Name = "name",
UnitPrice = "10",
Quantity = "2",
SubTotal = "1"
};
list.Add(item);
}
const int FIRST_COL_PAD = 20;
const int SECOND_COL_PAD = 7;
const int THIRD_COL_PAD = 20;
var sb = new StringBuilder();
sb.AppendLine("Start of receipt");
sb.AppendLine("================");
foreach (var item in list)
{
sb.Append(item.Code.PadRight(FIRST_COL_PAD));
var breakDown = int.Parse(item.UnitPrice) > 0 ? item.UnitPrice + "x" + 2 : string.Empty;
sb.Append(breakDown.PadRight(SECOND_COL_PAD));
sb.AppendLine(string.Format("{0:0.00} A", item.SubTotal).PadLeft(THIRD_COL_PAD));
}
sb.AppendLine("================");
printText = new PrintText(sb.ToString(), new Font("Monospace Please...", 20));
System.Windows.Forms.PrintDialog pd = new System.Windows.Forms.PrintDialog();
pdoc = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
pd.Document = pdoc;
pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage);
DialogResult result = pd.ShowDialog();
if (result == DialogResult.OK)
{
PrintPreviewDialog pp = new PrintPreviewDialog();
pp.Document = pdoc;
result = pp.ShowDialog();
if (result == DialogResult.OK)
{
pdoc.Print();
}
}
事件:
void pdoc_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics graphics = e.Graphics;
var layoutArea = new SizeF(widht, 0);
SizeF stringSize = graphics.MeasureString(printText.Text, printText.Font, layoutArea, printText.StringFormat);
RectangleF rectf = new RectangleF(new PointF(), new SizeF(widht, stringSize.Height));
graphics.DrawString(printText.Text, printText.Font, System.Drawing.Brushes.Black, rectf, printText.StringFormat);
}
解决方案
推荐阅读
- java - Java Spring JDBC模板第一次请求需要时间
- python - 如何在bash命令中传递变量?
- stm32 - 当数据量较小时,内存到内存 DMA 传输是否存在权衡?
- python - 在 Windows 10 中安装 Python
- amazon-web-services - Elasticchache Redis 的 Stunnel(已启用集群模式)
- reactjs - React.js:如何在验证器库中使用 isLength?
- java - 从选择标记中选择值时抛出 ElementNotInteractableException
- ffmpeg - ffmpeg中thread_queue_size的正确使用
- python - 如何在 Python 3 中从 AWS 读取 Excel 文件?
- oauth - 作为管理员,代表其他用户获取访问令牌