求助c#打印源代码  分不够可以再加  送qq币也行

解决方案 »

  1.   

    转载:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Data;
    using System.Windows.Forms;namespace WindowsApplication1
    {
        /**//// <summary>
        /// Summary description for DatagridPrint.
        /// </summary>
        public class DatagridPrint
        {
            private DataGrid dataGrid;
            private PrintDocument printDocument;
            private PageSetupDialog pageSetupDialog;
            private PrintPreviewDialog printPreviewDialog;        public DatagridPrint(DataGrid dataGrid)
            { 
                this.dataGrid = dataGrid; 
                printDocument = new PrintDocument();
                printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
            }         private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                int rowCount = 0;
                int colCount = 0;
                int x = 0;
                int y = 0;
                int rowGap = 20;
                int colGap = 5;
                int leftMargin = 50;
                Font font = new Font("Arial", 10);
                Font headingFont = new Font("Arial", 11, FontStyle.Underline);
                Font captionFont = new Font("Arial", 10, FontStyle.Bold); 
                Brush brush = new SolidBrush(Color.Black);
                string cellValue = "";            if(dataGrid.DataSource.GetType().ToString() == "System.Data.DataTable")
                {
                    rowCount = ((DataTable)dataGrid.DataSource).Rows.Count;
                }
                else if(dataGrid.DataSource.GetType().ToString() == "System.Collections.ArrayList")
                {
                    rowCount = ((ArrayList)dataGrid.DataSource).Count;
                }
                colCount = dataGrid.TableStyles[0].GridColumnStyles.Count;            //print caption
                if(dataGrid.CaptionVisible)
                {
                    y += rowGap;
                    x = leftMargin;
                    e.Graphics.DrawString(dataGrid.CaptionText, captionFont, brush, x, y);
                }            //print headings 
                y += rowGap;
                x = leftMargin;
                for(int j = 0; j < colCount; j++)
                {
                    if(dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0)
                    {
                        cellValue = dataGrid.TableStyles[0].GridColumnStyles[j].HeaderText; 
                        e.Graphics.DrawString(cellValue, headingFont, brush, x, y);
                        x += dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap; 
                    }
                }             //print all rows
                for(int i = 0; i < rowCount; i++)
                {
                    y += rowGap;
                    x = leftMargin;
                    for(int j = 0; j < colCount; j++)
                    {
                        if(dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0)
                        {
                            cellValue = dataGrid[i,j].ToString(); 
                            e.Graphics.DrawString(cellValue, font, brush, x, y);
                            x += dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap;
                            y = y + rowGap * (cellValue.Split(new char[] {' ', ' '}).Length - 1); 
                        }
                    } 
                }
                string s = cellValue;
                string f3 = cellValue;
            }        public PrintDocument GetPrintDocument()
            {
                return printDocument;
            }        public void Print()
            {
                try
                {
                    pageSetupDialog = new PageSetupDialog();
                    pageSetupDialog.Document = printDocument;
                    pageSetupDialog.ShowDialog();
                    printPreviewDialog = new PrintPreviewDialog();
                    printPreviewDialog.Document = printDocument;
                    printPreviewDialog.Height = 600;
                    printPreviewDialog.Width = 800;
                    printPreviewDialog.ShowDialog();
                }
                catch(Exception e)
                {
                    throw new Exception("Printer error." + e.Message);
                }        }
        } 
    }
      

  2.   

    因为我是自学语言搞开发  所以专业术语不是很熟练   上面有位大虾说是针对DataGrid打印的。
    我的是不是属于DataGrid啊  界面上有一读出数据库后自动生成的列表  然后将该列表打印出来。
      

  3.   

    在ASPX文件中添加以下代码
    <input name="Print" class="np" id="Print" onclick="window.print();" type="button" value="打印">
    你的整个网页将被打印。
    适用于报表和列表的网页
      

  4.   

    我是c/s的啊
    我要实现的是listview里面的列表内容给打印出来啊
      

  5.   

    各位大侠: 
    本人通过listview来显示数据库表的内容,但不知道如何实现类似word的,对listview内容的打印预览、打印设置及打印,请各位大侠高手支支高招!! 
      

  6.   

    没做过listview,只做过datagrid的
      

  7.   

    参看
    http://www.codeproject.com/vb/net/datagridprinter.asp
    http://www.codeproject.com/vb/net/DataGrid_Printing_Class.asp
      

  8.   

    or
    http://www.codeproject.com/cs/miscctrl/DataGridPrinter.asp
      

  9.   

    打印listview还需要水晶报表吗?
      

  10.   

    參考:
    //公用打印窗体,傳入水晶報表即可
    public static void PrintRpt(ReportClass rptView)
    {         
    mis.Attend.FrmPrint printDlg = new mis.Attend.FrmPrint();            //登陸信息
                TableLogOnInfo logonInfo = new TableLogOnInfo();
                logonInfo.ConnectionInfo.ServerName = "srv";
                logonInfo.ConnectionInfo.DatabaseName = "mis";
                logonInfo.ConnectionInfo.UserID = "sa";
                logonInfo.ConnectionInfo.Password = "123"; rptView.Database.Tables[0].ApplyLogOnInfo(logonInfo);
    printDlg.crv.ReportSource = rptView;
    printDlg.Show();
    }
      

  11.   

    网上有金质打印的源代码下载啊.
    http://dnc.com.cn/help.aspx
      

  12.   

    我也用了金质打印的源码了  可是我在用MisGoldPrinter时提示不能发现MisGoldPrinter
    是什么意思啊 ?
      

  13.   

    谁对MIS金质打印通打印listview熟悉给讲解一下好吗   小弟感激不尽啊
      

  14.   

    我晕,自己顶了那么多了。我在另一个帖子里跟你说了,我现在也不知道如何打印listview,金质打印通曾经用过,但太过复杂也就放弃了。现在是用水晶报表实现的打印。
      

  15.   

    Yellow198267(回答完毕,谢谢。请给分!)  
    你有水晶报表的例子吗
      

  16.   

    以前看别人调用windows的API来搞。
      

  17.   

    楼上的   你记下我信箱和qq吧  发给我好吗  谢谢了 酬劳您说  我已经快急坏了
    信箱 [email protected]   qq  121236717