C#中点击一个打印按钮时,将窗体内的所有内容都打印出来??

bishetianna 2010-05-21 03:42:43
我要在一个窗体中实现一个合同的打印,用户首先在窗体内的文本框中输入一些内容,然后点击打印合同之后,就能够将此窗体上的所有内容都打印出来,包括窗体中的标签,文本框中的内容什么的都能打印。这个窗体中的内容就是合同的样式,请问一下大家,这个打印该如何实现呢??
...全文
460 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
bishetianna 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 csui2008 的回复:]
引用 16 楼 bishetianna 的回复:
引用 11 楼 csui2008 的回复:
还是把以上内容先整理成一个模板(水晶报表,Excel,reportDocument等),然后按你输入的资料直接填模板,最后打印或预览就好了,这样通用性好些

如何整理成一个模板呢?你的意思是先弄好一个合同的模板,然后打印的时候把我在窗体中输入的资料填入进去是吗?


先弄个合同的模板应该很容……
[/Quote]
合同的模板是在哪里弄?窗体中还是水晶报表中?水晶报表没用过,将合同的模板在水晶报表中弄好,再把窗体中输入的参数传入到设置好的参数位置是吗
东莞寻香苑 2010-05-21
  • 打赏
  • 举报
回复
也就是他们常说的套表打印
东莞寻香苑 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 bishetianna 的回复:]
引用 11 楼 csui2008 的回复:
还是把以上内容先整理成一个模板(水晶报表,Excel,reportDocument等),然后按你输入的资料直接填模板,最后打印或预览就好了,这样通用性好些

如何整理成一个模板呢?你的意思是先弄好一个合同的模板,然后打印的时候把我在窗体中输入的资料填入进去是吗?
[/Quote]

先弄个合同的模板应该很容易吧,然后如果是水晶报表就以传参的形式填到以前设置好的参数位置就可以,EXCEL报表直接填到适当的位置就可以了
bishetianna 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 csui2008 的回复:]
还是把以上内容先整理成一个模板(水晶报表,Excel,reportDocument等),然后按你输入的资料直接填模板,最后打印或预览就好了,这样通用性好些
[/Quote]
如何整理成一个模板呢?你的意思是先弄好一个合同的模板,然后打印的时候把我在窗体中输入的资料填入进去是吗?
doubleu2005 2010-05-21
  • 打赏
  • 举报
回复
用VB最简单,print.Form
C#的打印就是麻烦
wjq 2010-05-21
  • 打赏
  • 举报
回复
最简单的办法:抓图,打印。缺点,可能会不清晰,且数据量大,套打时会导致打印列队堵塞

好点的办法:为可能用到的控件写对应的绘图方法,比如

        private void DrawLabel(Label l, Graphics g)
{
Rectangle r = GetControlRect(l);
if (l.AutoSize)
{
r.Width = (int)g.MeasureString(l.Text, l.Font).Width;
}

if (l.BorderStyle != BorderStyle.None)
{
g.DrawRectangle(_pen, r);
}
r.Width = (int)(r.Width * 1.1);
r.Height = (int)(r.Height * 1.1);
if (l.TextAlign == ContentAlignment.BottomRight || l.TextAlign == ContentAlignment.MiddleRight || l.TextAlign == ContentAlignment.TopRight)
g.DrawString(GetControlText(l), l.Font, l.Enabled ? new SolidBrush(l.ForeColor) : Brushes.Gray, (RectangleF)r, new StringFormat(StringFormatFlags.DirectionRightToLeft));
else
g.DrawString(GetControlText(l), l.Font, l.Enabled ? new SolidBrush(l.ForeColor) : Brushes.Gray, (RectangleF)r);
}


打印时,遍历窗口内的控件,并根据类型,调用你的绘制函数向打印机绘图。




更方便些的方案,找一个报表工具,通过设计器做一个模板,然后做数据赋值/绑定后打印
wuyq11 2010-05-21
  • 打赏
  • 举报
回复
设计报表,在报表中输入数据再打印
屏幕截图打印也是种方法
Rectangle R = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
Image img = new Bitmap(R.Width, R.Height);
Graphics G = Graphics.FromImage(img);
G.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(R.Width, R.Height));。
IntPtr dc = G.GetHdc();
G.ReleaseHdc(dc);
G.Dispose();
img .Save("c:\\a.jpg");
到word使用addpictures
东莞寻香苑 2010-05-21
  • 打赏
  • 举报
回复
还是把以上内容先整理成一个模板(水晶报表,Excel,reportDocument等),然后按你输入的资料直接填模板,最后打印或预览就好了,这样通用性好些
兔子-顾问 2010-05-21
  • 打赏
  • 举报
回复
抓图,抓去当前窗体的。你要自己修改一点哦。不能都让别人给你弄好。
private void button1_Click(object sender, EventArgs e)
{
CaptureImage(this.Location,Point.Empty, new Rectangle(0,0,Width,Height), "a.bmp");
}

public static void CaptureImage(Point SourcePoint, Point DestinationPoint, Rectangle SelectionRectangle, string FilePath)
{
using (Bitmap bitmap = new Bitmap(SelectionRectangle.Width, SelectionRectangle.Height))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(SourcePoint, DestinationPoint, SelectionRectangle.Size);
}
bitmap.Save(FilePath, System.Drawing.Imaging.ImageFormat.Bmp);
}
}
maguowei19890708 2010-05-21
  • 打赏
  • 举报
回复
没接触过,学习了!!!
bishetianna 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wuyazhe 的回复:]
引用 5 楼 bishetianna 的回复:
引用 1 楼 wuyazhe 的回复:
屏幕抓图。然后保存图片。打印?

不是抓图,就是点击打印按钮之后,能够将窗体上的内容显示到一个打印页面预览中一样,然后就可以在那里设置打印了



打印预览的参数就是一个图片
[/Quote]
嗯,那就是那个意思,可是要怎么样才能实现呢?
兔子-顾问 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bishetianna 的回复:]
引用 1 楼 wuyazhe 的回复:
屏幕抓图。然后保存图片。打印?

不是抓图,就是点击打印按钮之后,能够将窗体上的内容显示到一个打印页面预览中一样,然后就可以在那里设置打印了
[/Quote]


打印预览的参数就是一个图片
bishetianna 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bishetianna 的回复:]
引用 1 楼 wuyazhe 的回复:
屏幕抓图。然后保存图片。打印?

不是抓图,就是点击打印按钮之后,能够将窗体上的内容显示到一个打印页面预览中一样,然后就可以在那里设置打印了
[/Quote]
那如何在窗体中点击打印之后窗体中的内容就到了WORD中呢
bishetianna 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyazhe 的回复:]
屏幕抓图。然后保存图片。打印?
[/Quote]
不是抓图,就是点击打印按钮之后,能够将窗体上的内容显示到一个打印页面预览中一样,然后就可以在那里设置打印了
倒霉熊 2010-05-21
  • 打赏
  • 举报
回复
既然是打印,肯定打印出来的是纸啦,那样就好办啦。图片也行,生成DOC文件也行
army369168520 2010-05-21
  • 打赏
  • 举报
回复
楼主没说清楚
zhoubupt 2010-05-21
  • 打赏
  • 举报
回复
截图好了
兔子-顾问 2010-05-21
  • 打赏
  • 举报
回复
屏幕抓图。然后保存图片。打印?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧