谁知道System.Drawing.Printing.PrintEventArgs怎么用? 对打印进行好好的控制,需要自行继承编辑PrintController子类。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 PrintPage事件这里有个例子ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemdrawingprintingprintdocumentclasstopic.htm 刚做完打印,感觉System.Drawing.Printing.PrintEventArgs很有用,通过该事件类,可以获得打印的区域,打印的graphics对象。对打印进行监视觉得不行,可以用打印监视器类来实现。 给你一段代码,你看看/// <summary> /// 打印水单 /// </summary> /// <param name="sender"></param> /// <param name="ev"></param> private void PrintInOut(object sender, PrintPageEventArgs ev) { Font printFont; String str, temp; float yPos = 0; int count = 0; float leftMargin = 0; //ev.MarginBounds.Left; float topMargin = 0; //ev.MarginBounds.Top; printFont = new Font("黑体", 12); str = "欢 迎 光 临"; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString (str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); count++; //加一空行// printFont = new Font("黑体", 12);// str = uncString.FillLeftSpace( this.labelShopName.Text, 20 - this.labelShopName.Text.Length );// yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));// ev.Graphics.DrawString (str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); printFont = new Font("新宋体", 10); str = "========================================"; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)) + 5; ev.Graphics.DrawString (str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); //打印流水号 str = "流水号:"+this.lb_inout_code.Text; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = "----------------------------------------"; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = " 品名 单价 数量 折扣 金额"; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = "----------------------------------------"; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); foreach(DataRow dr in this.dtInout.Rows) { str = dr["item_name"].ToString(); //打印品名 yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); if(dr["item_discount"].ToString() == "100") { temp = " "; } else { temp = uncString.FillLeftSpace(dr["item_discount"].ToString(),5); } //打印单价、数量、折扣、金额 str = " " + uncString.FillLeftSpace( dr["item_price"].ToString(), 7 ) + uncString.FillLeftSpace( dr["item_qty"].ToString(), 7 ) + temp + uncString.FillLeftSpace( dr["item_amount"].ToString(), 10 ); yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); } str = "----------------------------------------"; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = " 合计: " + uncString.FillLeftSpace( this.lb_act_amount.Text.ToString(), 11 ); yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = " 收银: " + uncString.FillLeftSpace(this.tb_Money.Text.ToString(), 11 ); yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); if ( this.lb_change.Text != "0.00" ) { str = " 找零: " + uncString.FillLeftSpace( this.lb_change.Text, 11 ); yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); } count++; //加一空行 str = DateTime.Now.ToString( "yyyy.MM.dd HH:mm:ss" ); yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); //滚动6行 count += 5; str = " "; yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); } try { PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler( PrintInOut ); pd.Print(); } catch { this.sp_description.Text = "打印失败!请检查打印机是否可用..........."; return; } ??的含义 VS2005 C#串口数据接收事件使用?做短信用的 求c#.NET中内存地址、大小测试函数 求取两个标签间内容的正则表达式 求C# 语音识别源代码 打开一个记事本文档,并将光标定位到某一行,怎么搞 谁有《Visual C#图像处理程序设计实例》这本书的电子版阿 请教:怎样实现 MSN 中好友列表的界面? 100分求助:各位高手,我使用PrintDocument打印文档,如何才能不显示打印进度 按时间执行c#代码 如何修改資源文件里指定name的value 请问能否把C#做的程序编译成能独立运行的机器码?怎么做呢?
这里有个例子
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemdrawingprintingprintdocumentclasstopic.htm
/// 打印水单
/// </summary>
/// <param name="sender"></param>
/// <param name="ev"></param>
private void PrintInOut(object sender, PrintPageEventArgs ev)
{
Font printFont;
String str, temp;
float yPos = 0;
int count = 0;
float leftMargin = 0; //ev.MarginBounds.Left;
float topMargin = 0; //ev.MarginBounds.Top; printFont = new Font("黑体", 12);
str = "欢 迎 光 临";
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString (str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); count++; //加一空行// printFont = new Font("黑体", 12);
// str = uncString.FillLeftSpace( this.labelShopName.Text, 20 - this.labelShopName.Text.Length );
// yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
// ev.Graphics.DrawString (str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); printFont = new Font("新宋体", 10);
str = "========================================";
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics)) + 5;
ev.Graphics.DrawString (str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); //打印流水号
str = "流水号:"+this.lb_inout_code.Text;
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = "----------------------------------------";
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = " 品名 单价 数量 折扣 金额";
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = "----------------------------------------";
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
foreach(DataRow dr in this.dtInout.Rows)
{
str = dr["item_name"].ToString(); //打印品名
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
if(dr["item_discount"].ToString() == "100")
{
temp = " ";
}
else
{
temp = uncString.FillLeftSpace(dr["item_discount"].ToString(),5);
}
//打印单价、数量、折扣、金额
str = " " +
uncString.FillLeftSpace( dr["item_price"].ToString(), 7 ) +
uncString.FillLeftSpace( dr["item_qty"].ToString(), 7 ) +
temp +
uncString.FillLeftSpace( dr["item_amount"].ToString(), 10 );
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); } str = "----------------------------------------";
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); str = " 合计: " +
uncString.FillLeftSpace( this.lb_act_amount.Text.ToString(), 11 );
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
str = " 收银: " +
uncString.FillLeftSpace(this.tb_Money.Text.ToString(), 11 );
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
if ( this.lb_change.Text != "0.00" )
{
str = " 找零: " +
uncString.FillLeftSpace( this.lb_change.Text, 11 );
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str , printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
} count++; //加一空行 str = DateTime.Now.ToString( "yyyy.MM.dd HH:mm:ss" );
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); //滚动6行
count += 5;
str = " ";
yPos = topMargin + ((count++) * printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString ( str, printFont, Brushes.Black, leftMargin, yPos, new StringFormat());
}
{
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler( PrintInOut );
pd.Print();
}
catch
{
this.sp_description.Text = "打印失败!请检查打印机是否可用...........";
return;
}