我正在开发一个Windows窗体应用程序。在这个应用程序中,我使用一个包含许多标签的面板。它们具有拖放的特性。用户将标签拖放到他想要的位置。 最后,当他点击打印按钮时,它必须打印。
但我正在使用标签列表。我正在填写空白页。
private void printDocument1_PrintPage(object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
List<Label> lbls = this.Controls.OfType<Label>().ToList();
foreach (var lbl in lbls)
{
e.Graphics.DrawString(lbl.Text,
new Font(comboBox1.SelectedItem.ToString(), Int32.Parse(comboBox2.SelectedItem.ToString()), FontStyle.Bold), Brushes.Black, lbl.Left, lbl.Top);
}
答案 0 :(得分:0)
我可以看到你可能遇到的两个问题。
首先,设置断点并检查this.Controls.OfType<Label>().ToList()
实际上是否有任何项目。如果它没有,那么你可能不得不改变它以寻找面板的子控件,而不是表单。
其次,您正在打印的页面与表单的大小不同,并且具有页边距。 PrintPageEventArgs.MarginBounds
会告诉您边距的大小和位置。 PrintPageEventArgs.PageBounds
会告诉您页面有多大。确保在边距内绘制。如果在边缘之外绘制某些东西,它可能不会被打印出来。如果它在页面之外,则100%绝对不会被打印。