急 c# winform 自定义打印行的内容

时间:2021-12-25 06:02:58
我做了一个会员的管理软件 我想再里面实现账单打印,打印内容如下:
     单位名称

账单号:200908030001
结账时间:2009-08-04 01:23:20
---------------------------------
消费项目  单价 数量 总计
项目一    1    2    2
项目二    5    3    15
。。。

总计:400 元
折扣:50%
实收:200 元
结账方式:现金
---------------------------------
联系地址:单位地址
联系电话:88888888888

客户签名____________

我要怎么设置打印的内容呢

这里面要考虑混合结账时候的东西 比如现金和银行卡,使用优惠券等等

本人菜鸟 对打印一窍不通 期待高手 帮个忙 能帮我实现打印的项目是活的

16 个解决方案

#1


怎么没人响应哦 ??

#2


用水晶报表画好你要打印的内容,将报表扔到CrystalReportViewer中(设置其ReportSource属性),

最后调用CrystalReportViewer.PrintReport()方法,就输出到打印机了。

VS2005/2008 带有水晶报表的简版。




#3


得用GUI+  不过你这样的貌似不难 参考MSDN

#4


使用PrintDocument
然后向里面画内容

#5


fastreport

#6


可以考虑其他控件,如Aspose做这方面的东西很好

#8


用CrystalReportViewer和PrintDocument 
 我知道 但是不知道怎么处理动态的东西,
比如消费的项目的数量并不是固定的,
可能只有一个,也可能有几个,也可能有几十个。
GUI+好像是画图之类的吧 
 fastreport 和 Aspose 更不会用,头一次听说 呵呵

参考C# WinForm开发系列 - Print  我还在看

希望能给个具体的例子 关键是动态的地方

我现在的代码是:

 String text0 = ""; String text1 = "";
            //获取文本框的内容绘制图形传到打印机打印
            text0 = this.textBox1.Text;
            text1 = this.label1.Text;
            e.Graphics.DrawString(text0 + text1,new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0,0);
            e.Graphics.DrawString(text1, new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0, 50);
            e.Graphics.DrawString("___________________________________________", new Font("宋体", 30, FontStyle.Regular), Brushes.Blue, 0, 100);

#9


期待中。。。。。

#10


关注中。。。。

#11


打印机的问题,
难道没有人感兴趣吗?
惭愧,
发了一个没有多少人关注的贴,
或许是我的问题太简单了,
众朋不与回帖,
意寓不屑。。。。。

#12


引用 4 楼 lsj_zrp 的回复:
使用PrintDocument
然后向里面画内容

正确

#13


这么久没有人给个具体的方案,
等我搞定后再结贴,
可能要一阵子了,毕竟没有搞过,
先对不住回帖的兄弟了!!!!

#14


最近比较忙,没有及时结贴,
先结贴
解决方法就像我的代码:
String text0 = ""; String text1 = ""; 
            //获取文本框的内容绘制图形传到打印机打印 
            text0 = this.textBox1.Text; 
            text1 = this.label1.Text; 
            e.Graphics.DrawString(text0 + text1,new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0,0); 
            e.Graphics.DrawString(text1, new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 20, 0); 
            e.Graphics.DrawString("___________________________________________", new Font("宋体", 30, FontStyle.Regular), Brushes.Blue, 40, 0);

我把横坐标设置成变量 然后判断要打印的内容是否存在就可以解决了

如我申明 string a=20;
我的代码就是
String text0 = ""; String text1 = ""; 
            //获取文本框的内容绘制图形传到打印机打印 
            text0 = this.textBox1.Text; 
            text1 = this.label1.Text; 
            e.Graphics.DrawString(text0 + text1,new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0,0); 
if (texti存在值)
{
            e.Graphics.DrawString(text1, new Font("宋体", 30, FontStyle.Regular), Brushes.Black, a, 0); 
a=a+20;
}
            e.Graphics.DrawString("___________________________________________", new Font("宋体", 30, FontStyle.Regular), Brushes.Blue,a , 0);

结贴

#15


错了 应该是 Int a=20; 

#16


其实很简单 如果你上面的样式是个死的话,打印的时候把坐标固定死就可以了。
如果是活的就要多几个判断。

#1


怎么没人响应哦 ??

#2


用水晶报表画好你要打印的内容,将报表扔到CrystalReportViewer中(设置其ReportSource属性),

最后调用CrystalReportViewer.PrintReport()方法,就输出到打印机了。

VS2005/2008 带有水晶报表的简版。




#3


得用GUI+  不过你这样的貌似不难 参考MSDN

#4


使用PrintDocument
然后向里面画内容

#5


fastreport

#6


可以考虑其他控件,如Aspose做这方面的东西很好

#7


#8


用CrystalReportViewer和PrintDocument 
 我知道 但是不知道怎么处理动态的东西,
比如消费的项目的数量并不是固定的,
可能只有一个,也可能有几个,也可能有几十个。
GUI+好像是画图之类的吧 
 fastreport 和 Aspose 更不会用,头一次听说 呵呵

参考C# WinForm开发系列 - Print  我还在看

希望能给个具体的例子 关键是动态的地方

我现在的代码是:

 String text0 = ""; String text1 = "";
            //获取文本框的内容绘制图形传到打印机打印
            text0 = this.textBox1.Text;
            text1 = this.label1.Text;
            e.Graphics.DrawString(text0 + text1,new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0,0);
            e.Graphics.DrawString(text1, new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0, 50);
            e.Graphics.DrawString("___________________________________________", new Font("宋体", 30, FontStyle.Regular), Brushes.Blue, 0, 100);

#9


期待中。。。。。

#10


关注中。。。。

#11


打印机的问题,
难道没有人感兴趣吗?
惭愧,
发了一个没有多少人关注的贴,
或许是我的问题太简单了,
众朋不与回帖,
意寓不屑。。。。。

#12


引用 4 楼 lsj_zrp 的回复:
使用PrintDocument
然后向里面画内容

正确

#13


这么久没有人给个具体的方案,
等我搞定后再结贴,
可能要一阵子了,毕竟没有搞过,
先对不住回帖的兄弟了!!!!

#14


最近比较忙,没有及时结贴,
先结贴
解决方法就像我的代码:
String text0 = ""; String text1 = ""; 
            //获取文本框的内容绘制图形传到打印机打印 
            text0 = this.textBox1.Text; 
            text1 = this.label1.Text; 
            e.Graphics.DrawString(text0 + text1,new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0,0); 
            e.Graphics.DrawString(text1, new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 20, 0); 
            e.Graphics.DrawString("___________________________________________", new Font("宋体", 30, FontStyle.Regular), Brushes.Blue, 40, 0);

我把横坐标设置成变量 然后判断要打印的内容是否存在就可以解决了

如我申明 string a=20;
我的代码就是
String text0 = ""; String text1 = ""; 
            //获取文本框的内容绘制图形传到打印机打印 
            text0 = this.textBox1.Text; 
            text1 = this.label1.Text; 
            e.Graphics.DrawString(text0 + text1,new Font("宋体", 30, FontStyle.Regular), Brushes.Black, 0,0); 
if (texti存在值)
{
            e.Graphics.DrawString(text1, new Font("宋体", 30, FontStyle.Regular), Brushes.Black, a, 0); 
a=a+20;
}
            e.Graphics.DrawString("___________________________________________", new Font("宋体", 30, FontStyle.Regular), Brushes.Blue,a , 0);

结贴

#15


错了 应该是 Int a=20; 

#16


其实很简单 如果你上面的样式是个死的话,打印的时候把坐标固定死就可以了。
如果是活的就要多几个判断。