永发信息网

C#可以控制打印机么?谁有教程或者代码

答案:5  悬赏:30  手机版
解决时间 2021-02-28 15:39
想用C#写个程序,用户点击某个按钮,可以打印相关数据,查了一下,VC++,VB的有,不知道C#可不可以,我没有学过VC++和VB,谁有教程或者代码可以分享一下么....
最佳答案
C#中打印控件的使用

在同学的帮助下终于把,打印的程序搞定了^_^.弄出来共享一下吧. 首先弄一个printDocument控件,然后在打印的按钮中直接调用printDocument1.print()事件. 再次嘛就是写printDocument的PrintPag事件了. 下面是我昨天弄好的一个弄出来看看吧。

private void button1_Click(object sender, EventArgs e)

{

printDocument1.Print();

}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)

{

Font tabelTextFont = new Font("宋体", 10);

if (dataGridView1.DataBindings != null)

{

int[] columnsWidth = new int[dataGridView1.Columns.Count];//得到所有列的个数

int[] columnsLeft=new int[dataGridView1.Columns.Count]; //

for (int c = 0; c < columnsWidth.Length; c++)//得到列标题的宽度

{

columnsWidth[c] = (int)e.Graphics.MeasureString(dataGridView1.Columns[c].HeaderText , tabelTextFont).Width;

}

for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++)//rowindex当前行

{

for (int columnIndex = 0; columnIndex < dataGridView1.Columns.Count; columnIndex++)//当前列

{

int w = (int)e.Graphics.MeasureString(dataGridView1.Columns[columnIndex].Name , tabelTextFont).Width; columnsWidth[columnIndex] = w > columnsWidth[columnIndex] ? w : columnsWidth[columnIndex];

}

}

int rowHidth = 20;

int tableLeft=60;

int tableTop=70;

columnsLeft[0]=tableLeft;

for (int i=1;i<=columnsWidth.Length -1;i++)

{

columnsLeft[i] = columnsLeft[i - 1] + columnsWidth[i - 1]+15;

}

StringFormat sf=new StringFormat ();

sf.Alignment=StringAlignment.Center ;//居中打印

e.Graphics.DrawString("欢迎石印死了开的交流!", new Font("宋体", 15), Brushes.Black, new Point(e.PageBounds.Width / 2, 20),sf );//打印标题

for (int c = 0; c < columnsWidth.Length; c++)//打印表中的列名

{

e.Graphics.DrawString(dataGridView1.Columns[c].HeaderText,new Font ("宋体",10,FontStyle.Bold), Brushes.Black, new Point(columnsLeft[c], tableTop)); e.Graphics.DrawLine(Pens.Black, new Point(columnsLeft[c]-5, tableTop - 5), new Point(columnsLeft[c]-5, tableTop + (dataGridView1 .Rows .Count+1)*rowHidth));

}

e.Graphics.DrawLine(Pens.Black, new Point(columnsLeft[dataGridView1.Columns.Count - 1] + columnsWidth[dataGridView1.Columns.Count - 1], tableTop - 5), new Point(columnsLeft[dataGridView1.Columns.Count - 1] + columnsWidth[dataGridView1.Columns.Count - 1], tableTop + (dataGridView1.Rows.Count + 1) * rowHidth));//画最后面的线

e.Graphics.DrawLine(Pens.Black, new Point(columnsLeft[0] - 5, tableTop - 5), new Point(columnsLeft[dataGridView1.Columns.Count - 1] + columnsWidth[dataGridView1.Columns.Count - 1], tableTop - 5)); for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++)//打印表中的内容

{

for (int columnIndex = 0; columnIndex < dataGridView1.Columns.Count; columnIndex++)

{

e.Graphics.DrawString(dataGridView1.Rows[rowIndex].Cells[columnIndex].Value.ToString(), tabelTextFont, Brushes.Black, new Point(columnsLeft[columnIndex], tableTop + rowHidth * (rowIndex + 1)));

}

e.Graphics.DrawLine(Pens.Black, new Point(columnsLeft[0]-5, tableTop + (rowIndex +1) * rowHidth-5), new Point(columnsLeft[dataGridView1.Columns.Count - 1] + columnsWidth[dataGridView1.Columns.Count - 1], tableTop + (rowIndex +1)*rowHidth-5));//循环画行

}

}

另外要是想有打印预览的话,那就还要一个printPreviewDialog控件了。要把该控件的document事件和PrintDocument关联起来,就可以了。
全部回答
当然可以
c#使用控件就可以了 很简单实现
有关于打印机的 控件 可以试试
Excel.Application xApp = new Excel.ApplicationClass(); xApp.Visible = true; Excel.Workbook xBook = xApp.Workbooks._Open(path, Missing.Value, Missing.Value, Missing.Value, Missing.Value , Missing.Value, Missing.Value, Missing.Value, Missing.Value , Missing.Value, Missing.Value, Missing.Value, Missing.Value); xBook.PrintPreview(true); xBook.PrintOut( Missing.Value ,Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); xSheet = null; xBook = null; xApp.Quit(); xApp = null;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何刻录被加密的光盘
如图为某湖泊近一百年来每个月的平均水位变化
我考虑考华电或中国电力科学研究院的电力系统
地板砖生虫怎么办?由于地板浸水造成!如何解
天鹅颈怎么练
华尔街音乐会所怎么去啊,有知道地址的么
cdr安装失败出现vc++2005是否手动安装,求帮
大天使之剑练到410级需要多少时间到达?
密菓之密制鲜饮(南极路店)在什么地方啊,我要
深山藏古寺的地理含义
【灭火的四种方法】灭火的四种方法是隔离法、
不是自己身份证办的联通号码,现在需要换小卡
铜燃烧的化学表达式,现象及生成物质!急
我想知道从河南郑州到黑龙江大兴安岭需要做什
高铁一等座有乘警的工作座席吗
推荐资讯
峨眉山温泉价格
重装机兵二重制版蛋白宫殿上面一个地方是干嘛
谁知道九龙珠后面的几集讲霸王剑的,不是讲龙
2006年3月23日央视报道.中科院等离子体物理研
因交通事故现起诉被告方索赔我十五万 需要向
ABsAg阴性 Anti-HBs阳性HBeAg阴性Anti-HBe阳
金毛犬出气憋不吃饭是怎么了
招行提现怎么还款
有个金元宝,怎么卖出去
买房按揭贷款39万20年还清一个月还银行多少钱
wifi的速度和正在使用的人数多少有关系吗,还
为什么和喜欢的人在一起我感觉会变迟钝
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?