用C#打印控件的内容?
我从来没有用C#打印过任何东西。我只是想知道做这件事的标准方法是什么。在我的表格上,我有几个列表框和几个文本框。我想打印他们的内容,并显示在一个打印预览他们,在一个表中有一个很好的布局。然后,从他们的我希望用户能够打印 提前谢谢 一种方法是使用打印实现。用C#打印控件的内容?,c#,winforms,printing,C#,Winforms,Printing,我从来没有用C#打印过任何东西。我只是想知道做这件事的标准方法是什么。在我的表格上,我有几个列表框和几个文本框。我想打印他们的内容,并显示在一个打印预览他们,在一个表中有一个很好的布局。然后,从他们的我希望用户能够打印 提前谢谢 一种方法是使用打印实现。 至于。您需要使用System.Drawing.Printing库。您将使用PrintDocument.Print方法,您可以在上找到这是一个关于C#基本打印的方法。它处理文本,但可以很容易地扩展到绘制任何其他内容 C#中的打印与C#中的自定义绘
至于。您需要使用System.Drawing.Printing库。您将使用PrintDocument.Print方法,您可以在上找到这是一个关于C#基本打印的方法。它处理文本,但可以很容易地扩展到绘制任何其他内容 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;
}
private void printDocument1\u PrintPage(对象发送者,System.Drawing.Printing.PrintPageEventArgs e)
{
Font Font=新字体(“Arial”,10f);
图形g=e.图形;
Pen rectPen=新笔(颜色:黑色,2f);
画笔=画笔。黑色;
//查找项目的最宽宽度
对于(int i=0;我的方法非常完美,因为我已经让用户将信息保存到一个文本文件中。谢谢!我得到了一个“找不到内容”错误,当我遵循您提供的MSDN链接时。应该显式处理Pen rectPen
,还是GC处理它?GC不处理它。但这也不是一个很好的示例。此代码示例中的三个绘画对象Font、Pen和Brush实际上是我在类范围内声明的,而不是重新创建的每次调用PrintPage处理程序时,它们都会出现。我建议您在其他代码中也这样做。如果我记得您在一些笔和画笔周围使用了using语句。这太过分了,使代码更难阅读。只需将这些对象移动到类范围,并让它们在应用程序的生命周期内存在。我喜欢您提供的链接。谢谢,很容易使用!