遇到一个问题,需要大家帮忙
  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”是一个“类型”,这在给定的上下文中无效 我怎么改写呢???

解决方案 »

  1.   

    private void printTable(DataTable dt, System.Drawing.Printing.PrintPageEventArgs e) 
    {     //代码 } 
    方法是在printDocument的PrintPage事件下的一个参数
     private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
    printTable(dt, e);         }
      

  2.   

    printDocument1_PrintPage  楼上的朋友,这个事件是怎么来的?我这个是个服务,是没有界面的,控件就不好用了
      

  3.   


    {
        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)
            {
               
            } 这样来的 
      

  4.   

    另外 PrintPage事件~~必须是打印和预览才能触发.
    也就是 PrintDocument.Print();
      

  5.   

     protected void Button1_Click(object sender, EventArgs 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)
        {
            string strOrgID = SecurityService.CurrentUser.Orgid;
            DataTable dt = BLLFactory.CreateSyncDownloadService().GetEventInfoListForSync(strOrgID);
            printTable(dt, e);
        }
    我这样写并没有触发到 void _PrintDocument_PrintPage,请问怎样才能触发打印???
      

  6.   


    或则是打印预览的时候    PrintPreviewDialog _Dialog =new PrintPreviewDialog();
                _Dialog = _Document;
                _Dialog.Show();
      

  7.   


    我这里是没有界面的,我现在用的button是为了测试,在实际中是自动取到table后自动打印,我做的是一个service。就是每天晚上6六点取到这个table,打印出来就行了。
      

  8.   

    PrintDocument.Print(); ~~~~~不能运行?
      

  9.   

    把操作写到一个类
    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();
      

  10.   

    你看看你引用里有没有
    System.Drawing(在解决方案资源管理器中的引用)
      

  11.   

    看错问题了不好意思!
    全部源码可以到
    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;        }
      

  12.   

     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)
            {
                string strOrgID = SecurityService.CurrentUser.Orgid;
                DataTable dt = BLLFactory.CreateSyncDownloadService().GetEventInfoListForSync(strOrgID);
                printTable(dt, e);
            }
            private void printTable(DataTable dt, System.Drawing.Printing.PrintPageEventArgs e)
            {
                  //打印代码
             }
         }
      

  13.   

    我在控制面板中设置了默认打印机,在这里不能用吗? this.Printdoc 这里提示未设置默认打印机,怎么设置??
      

  14.   

    IsPlotter = “this.Printdoc.PrinterSettings.IsPlotter”引发了“System.Drawing.Printing.InvalidPrinterException”类型的异常