gpt4 book ai didi

c# - 在 C# 中打印控件的内容?

转载 作者:太空狗 更新时间:2023-10-30 00:47:01 24 4
gpt4 key购买 nike

我从未使用 C# 打印过任何东西。我只是想知道执行此操作的标准方法是什么。在我的表单上,我有几个列表框和几个文本框。我想打印它们的内容并在打印预览中显示它们,并在表格中使用漂亮的布局。然后从他们那里我希望用户能够打印。

提前致谢!

最佳答案

这是一个 nice little tutorial关于 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;
}

关于c# - 在 C# 中打印控件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com