在Windows窗体应用程序

时间:2016-11-15 05:07:29

标签: c#

我正在开发一个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);
            }

1 个答案:

答案 0 :(得分:0)

我可以看到你可能遇到的两个问题。

首先,设置断点并检查this.Controls.OfType<Label>().ToList()实际上是否有任何项目。如果它没有,那么你可能不得不改变它以寻找面板的子控件,而不是表单。

其次,您正在打印的页面与表单的大小不同,并且具有页边距。 PrintPageEventArgs.MarginBounds会告诉您边距的大小和位置。 PrintPageEventArgs.PageBounds会告诉您页面有多大。确保在边距内绘制。如果在边缘之外绘制某些东西,它可能不会被打印出来。如果它在页面之外,则100%绝对不会被打印。