遇到一个问题,需要大家帮忙
printTable(dt, System.Drawing.Printing.PrintDocument ); private void printTable(DataTable dt, System.Drawing.Printing.PrintPageEventArgs e)
{ //代码 }
printTable(dt, System.Drawing.Printing.PrintDocument );此处报错误“System.Drawing.Printing.PrintDocument”是一个“类型”,这在给定的上下文中无效 我怎么改写呢???
printTable(dt, System.Drawing.Printing.PrintDocument ); private void printTable(DataTable dt, System.Drawing.Printing.PrintPageEventArgs e)
{ //代码 }
printTable(dt, System.Drawing.Printing.PrintDocument );此处报错误“System.Drawing.Printing.PrintDocument”是一个“类型”,这在给定的上下文中无效 我怎么改写呢???
{ //代码 }
方法是在printDocument的PrintPage事件下的一个参数
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
printTable(dt, e); }
{
System.Drawing.Printing.PrintDocument _PrintDocument = new System.Drawing.Printing.PrintDocument();
_PrintDocument.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(_PrintDocument_PrintPage);
}
void _PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
} 这样来的
也就是 PrintDocument.Print();
{
System.Drawing.Printing.PrintDocument _PrintDocument = new System.Drawing.Printing.PrintDocument();
_PrintDocument.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(_PrintDocument_PrintPage);
}
void _PrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
string strOrgID = SecurityService.CurrentUser.Orgid;
DataTable dt = BLLFactory.CreateSyncDownloadService().GetEventInfoListForSync(strOrgID);
printTable(dt, e);
}
我这样写并没有触发到 void _PrintDocument_PrintPage,请问怎样才能触发打印???
或则是打印预览的时候 PrintPreviewDialog _Dialog =new PrintPreviewDialog();
_Dialog = _Document;
_Dialog.Show();
我这里是没有界面的,我现在用的button是为了测试,在实际中是自动取到table后自动打印,我做的是一个service。就是每天晚上6六点取到这个table,打印出来就行了。
public class PrintDemo
{
private System.Drawing.Printing.PrintDocument printdoc;
public void Print()
{
this.printdoc = new System.Drawing.Printing.PrintDocument();
this.printdoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printdoc_PrintPage);
this.printdoc.Print();
}
private void printdoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//这里写打印代码
}
}PrintDemo pm = new PrintDemo()
pm.Print();
System.Drawing(在解决方案资源管理器中的引用)
全部源码可以到
blog.csdn.net/dunao
中下载
/// <summary>
/// 打印设计器的内容
/// </summary>
/// <param name="printcopys">打印多少份副本</param>
public void PrintPage(int printcopys)
{
PrintDocument pd = LoadPrintSetting();
pd.Print();
} /// <summary>
/// 预览设计器的内容
/// </summary>
public void PrintView()
{
PrintDocument pd = LoadPrintSetting();
PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.Document = pd;
ppd.ShowDialog();
} /// <summary>
/// 数据源中的数据可以分多少页打印
/// </summary>
int pages = 0;
private PrintDocument LoadPrintSetting()
{
///计算出总面数
pages = datasource.Rows.Count % pagerows == 0 ? datasource.Rows.Count % pagerows : datasource.Rows.Count / pagerows + 1;
PrintDocument pd = new PrintDocument();
//自定义页面的大小
PaperSize ps = new PaperSize("MyPage", this.Width, this.Height);
pd.DefaultPageSettings.PaperSize = ps;
pd.PrinterSettings.PrinterName = printerConfig.PrintName;
pd.PrinterSettings.Copies = (short)printerConfig.Copies;
//使用自定义页面设置
pd.DefaultPageSettings.PaperSize.RawKind = 256;
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
return pd;
} /// <summary>
/// 当前是哪一页
/// </summary>
int currentpage = 1;
private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.TranslateTransform(printerConfig.XOFFSET, printerConfig.YOFFSET);
//首先打印的是第一页
this.Items.CurrentPage = currentpage;
this.Items.IsDrawByPrinter = true;
this.Items.UnSelectAll();
this.Items.Draw(e.Graphics);
//判断当前面是否小于总页数
if (currentpage < pages)
{
//如果小于总页数则当前页+1并且设置有更多的页为true
currentpage++;
e.HasMorePages = true;
}
else
{
//如果当前页>=总页数则设设置是否有更多的页为false结束打印
e.HasMorePages = false;
}
e.Graphics.ResetTransform();
this.Items.IsDrawByPrinter = false; }
{
private System.Drawing.Printing.PrintDocument Printdoc;
public void Print()
{
this.Printdoc = new System.Drawing.Printing.PrintDocument();
this.Printdoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(Printdoc_PrintPage);
this.Printdoc.Print();//此处报错,未安装打印机,实际我机器连接打印机了,也安装了虚拟打印机,这是什么原因??
}
private void Printdoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
string strOrgID = SecurityService.CurrentUser.Orgid;
DataTable dt = BLLFactory.CreateSyncDownloadService().GetEventInfoListForSync(strOrgID);
printTable(dt, e);
}
private void printTable(DataTable dt, System.Drawing.Printing.PrintPageEventArgs e)
{
//打印代码
}
}