我从未使用C#打印任何内容。我只是想知道这样做的标准方法是什么。在我的表单上,我有一些列表框和一些文本框。我想打印他们的内容并在打印预览中显示它们,在表格中有一个很好的布局。然后从他们我希望用户能够打印。
提前致谢!
答案 0 :(得分:4)
这是关于C#基本打印的nice little tutorial。它涉及文本,但可以轻松扩展以绘制其他任何内容。
使用C#进行打印与C#中的自定义绘制非常相似。最大的区别在于坐标系统从屏幕表示中翻转,您必须考虑页面的跨越(如果/在必要时)。打印方式也有点反直觉,因为您必须启动打印过程然后处理页面打印事件。
示例:强>
这是一个打印事件处理程序的简单示例,它假定存在名为listBox1的列表框控件,其中包含一些项目。它绘制每个项目以及它周围的框。
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Font font = new Font("Arial", 10f);
Graphics g = e.Graphics;
Pen rectPen = new Pen(Color.Black, 2f);
Brush brush = Brushes.Black;
// find widest width of items
for (int i=0; i<listBox1.Items.Count; i++)
if(maxItemWidth < (int)g.MeasureString(listBox1.Items[i].ToString(), font).Width)
maxItemWidth = (int)g.MeasureString(listBox1.Items[i].ToString(), font).Width;
// starting positions:
int itemHeight = (int)g.MeasureString("TEST", font).Height + 5;
int maxItemWidth = 0;
int xpos = 200;
int ypos = 200;
// print
for (int i = 0; i < listBox1.Items.Count; i++)
{
g.DrawRectangle(rectPen, xpos, ypos, maxItemWidth, itemHeight );
g.DrawString(listBox1.Items[i].ToString(), font, brush, xpos, ypos);
ypos += itemHeight;
}
e.HasMorePages = false;
}
答案 1 :(得分:2)
您将需要使用System.Drawing.Printing库。您将使用可在MSDN Page with Example
上找到的PrintDocument.Print方法答案 2 :(得分:1)