`
wooce
  • 浏览: 184177 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

支持打印功能的ListView类

    博客分类:
  • C#
F# 
阅读更多
最近用C#做了个小收费系统,需要用到支持打印功能的ListView类,在网上找了一个别人的如下:
http://www.chinaaspx.com/comm/dotnetbbs/Showtopic.aspx?Forum_ID=6&Id=156821

不过用的时候发现打印的时候打出来了页首和页脚,但就打不出来表格本身。
经过跟踪,修正代码如下:
    /// <summary> 
    /// ListView 的所见即所得的打印支持类。 
    /// </summary> 
    public class PrintListView : ListView
    {
        /// <summary> 
        /// 指示是否进行打印预览,默认值为 true 
        /// </summary> 
        private bool m_bIsPreview;

        /// <summary> 
        /// 指示是否总是打印标题,默认值为 true 
        /// </summary> 
        private bool m_bIsAlwaysPrintHeader;

        /// <summary> 
        /// 需要打印的页首字符串 
        /// </summary> 
        private string m_sPrintHeaderString;

        /// <summary> 
        /// 页首字体 
        /// </summary> 
        private Font m_oHeaderFont;

        /// <summary> 
        /// 正文字体 
        /// </summary> 
        private Font m_oBodyFont;

        /// <summary> 
        /// 页尾字体 
        /// </summary> 
        private Font m_oTailFont;

        /// <summary> 
        /// 正文部分的 ColumnHeader 字体,该字体为正文字体的加粗形式 
        /// </summary> 
        private Font m_oColumnHeaderFont;

        /// <summary> 
        /// 打印文档 
        /// </summary> 
        private PrintDocument m_oPrintDoc;


        /// <summary> 
        /// 行间距 
        /// </summary> 
        private int m_nLineSpace;


        private int m_nPrintWidth;            // 打印区域宽度 
        private int m_nPrintHeight;            // 打印区域长度 
        private int m_nPageCount;            // 打印页数 
        private int m_nCurPrintPage;         // 当前正在打印的页码 
        private int m_nTotalPage;            // 共有的页数 
        private int m_nFromPage;            // 用户选择的打印起始页 
        private int m_nCurPrintItem;         // 当前正在打印的元素 

        private Rectangle m_oHeaderRect;      // 打印页首的区域 
        private Rectangle m_oBodyRect;         // 打印正文的区域 
        private Rectangle m_oTailRect;         // 打印页尾的区域 

        private Brush defaultBrush;
        private Pen defaultPen;

        /// <summary> 
        /// 设置或获取是否进行打印预览 
        /// </summary> 
        public bool IsPreview
        {
            get { return m_bIsPreview; }
            set { m_bIsPreview = value; }
        }


        /// <summary> 
        /// 设置或获取是否总是打印标题 
        /// </summary> 
        public bool IsAlwaysPrintHeader
        {
            get { return m_bIsAlwaysPrintHeader; }
            set { m_bIsAlwaysPrintHeader = value; }
        }


        /// <summary> 
        /// 设置或获取打印的页首字符串 
        /// </summary> 
        public string PrintHeaderString
        {
            get { return m_sPrintHeaderString; }
            set { if (value != null) m_sPrintHeaderString = value; }
        }


        /// <summary> 
        /// 设置或获取页首字体 
        /// </summary> 
        public Font HeaderFont
        {
            set { m_oHeaderFont = value; }
            get { return m_oHeaderFont; }
        }


        /// <summary> 
        /// 设置或获取正文字体 
        /// 如果对正文字体的 Bold 属性设置为 true ,则发生 Exception 类型的异常 
        /// </summary> 
        public Font BodyFont
        {
            set
            {
                if (value == null)
                    return;
                if (value.Bold == true)
                {
                    throw new Exception("正文字体不能进行 [加粗] 设置.");
                }
                else
                {
                    m_oBodyFont = value;
                }
            }
            get { return m_oBodyFont; }
        }


        /// <summary> 
        /// 设置或获取页尾字体 
        /// </summary> 
        public Font TailFont
        {
            set { m_oTailFont = value; }
            get { return m_oTailFont; }
        }


        /// <summary> 
        /// 设置或获取行间距 
        /// </summary> 
        public int LineSpace
        {
            get { return m_nLineSpace; }
            set
            {
                if (value < 0)
                {
                    m_nLineSpace = 0;
                }
                m_nLineSpace = value;
            }
        }


        /// <summary> 
        /// 构造函数,设置打印信息的一些默认值 
        /// </summary> 
        public PrintListView()
        {
            m_bIsPreview = true;
            m_bIsAlwaysPrintHeader = true;
            m_sPrintHeaderString = "";
            m_oHeaderFont = null;
            m_oTailFont = null;
            m_oBodyFont = null;
            m_oColumnHeaderFont = null;
            m_oPrintDoc = null;

            m_nPrintWidth = 0;
            m_nPrintHeight = 0;
            m_nPageCount = 0;
            m_nCurPrintPage = 1;
            m_nFromPage = 1;
            m_nLineSpace = 0;
            m_nCurPrintItem = 0;

            defaultBrush = Brushes.Black;
            defaultPen = new Pen(defaultBrush, 1);
        }


        /// <summary> 
        /// 初始化打印文档的属性 
        /// </summary> 
        /// <returns></returns> 
        private void InitPrintDocument()
        {
            m_oPrintDoc = new PrintDocument();
            m_oPrintDoc.DocumentName = m_sPrintHeaderString;
            if (m_oPrintDoc.PrinterSettings.PrinterName == "<no default printer>")
            {
                throw new Exception("未找到默认打印机.");
            }
            else
            {
                m_oPrintDoc.PrintPage += new PrintPageEventHandler(PrintPage);
                m_oPrintDoc.BeginPrint += new PrintEventHandler(BeginPrint);
                m_oPrintDoc.EndPrint += new PrintEventHandler(EndPrint);
            }
            /* 设置打印字体 */
            if (m_oHeaderFont == null)
            {
                m_oHeaderFont = new Font("楷体_GB2312", 16, FontStyle.Bold, GraphicsUnit.World);
            }

            if (m_oBodyFont == null)
            {
                m_oBodyFont = new Font("楷体_GB2312", 14, FontStyle.Regular, GraphicsUnit.World);
            }

            m_oColumnHeaderFont = new Font(m_oBodyFont, FontStyle.Bold);

            if (m_oTailFont == null)
            {
                m_oTailFont = new Font("楷体_GB2312", 12, FontStyle.Regular, GraphicsUnit.World);
            }
        }


        /// <summary> 
        /// 初始化打印纸张设置 
        /// </summary> 
        private bool InitPrintPage(out Margins margins)
        {
            margins = null;

            /* 获取当前 listview 的分辨率 */
            Graphics g = this.CreateGraphics();
            float x = g.DpiX;
            g.Dispose();

            /* 显示纸张设置对话框 */
            PageSetupDialog ps = new PageSetupDialog();
            ps.Document = m_oPrintDoc;
            if (ps.ShowDialog() == DialogResult.Cancel)
            {
                return false;
            }
            else
            {               // 根据用户设置的纸张信息计算打印区域,计算结果的单位为 1/100 Inch 
                m_nPrintWidth = ps.PageSettings.Bounds.Width - ps.PageSettings.Margins.Left - ps.PageSettings.Margins.Right;
                m_nPrintHeight = ps.PageSettings.Bounds.Height - ps.PageSettings.Margins.Top - ps.PageSettings.Margins.Bottom;
                margins = ps.PageSettings.Margins;
            }
            if (m_nPrintWidth <= 0 || m_nPrintHeight <= 0)
            {
                throw new Exception("纸张设置错误.");
            }

            /* 将当前 listview 的各column的长度和转换为英寸,判断打印范围是否越界 */
            int listViewWidth = 0;
            for (int i = 0; i < this.Columns.Count; i++)
            {
                listViewWidth += this.Columns[i].Width;
            }
            if (Convert.ToInt32(listViewWidth / x * 100) > m_nPrintWidth)
            {
                //throw new Exception("打印内容超出纸张范围 !\r\n请尝试调整纸张或纸张边距;\r\n或缩小表格各列的宽度。");
            }
            m_oPrintDoc.DefaultPageSettings = ps.PageSettings;
            return true;
        }


        /// <summary> 
        /// 初始化打印页码设置 
        /// </summary> 
        private bool InitPrintPageNumber(Margins margins)
        {

            /* 计算页数 */
            int headerFontHeight = m_oHeaderFont.Height;
            int columnHeaderFontHeight = m_oColumnHeaderFont.Height;
            int bodyFontHeight = m_oBodyFont.Height;
            int tailFontHeight = m_oTailFont.Height;

            // 页首区域打印 页首字符串 以及一条横线 
            m_oHeaderRect = new Rectangle(margins.Left, margins.Top, m_nPrintWidth, headerFontHeight + m_nLineSpace + 3);

            int tailHeight = tailFontHeight + m_nLineSpace + 3;
            // 页尾区域打印 一条横线,页码和打印时间(在同一行) 
            m_oTailRect = new Rectangle(margins.Left, margins.Top + m_nPrintHeight - tailHeight, m_nPrintWidth, tailHeight);

            //正文区域为去掉页首和页尾区域的部分 
            m_oBodyRect = new Rectangle(margins.Left, m_oHeaderRect.Bottom + 2, m_nPrintWidth, m_oTailRect.Top - m_oHeaderRect.Bottom - 4);

            /* 计算第一页能打印的元素个数 */
            int printItemPerPage = 0;
            int firstPageItem = Convert.ToInt32((m_oBodyRect.Height - columnHeaderFontHeight - m_nLineSpace) / (bodyFontHeight + m_nLineSpace));
            if (firstPageItem >= this.Items.Count)
            {   // 需打印的元素只有一页 
                m_nPageCount = 1;
            }
            else
            {                              // 需要打印的元素有多页 
                printItemPerPage = firstPageItem;
                int leftItems = this.Items.Count - firstPageItem;
                if (m_bIsAlwaysPrintHeader == false)
                {
                    printItemPerPage = (m_oBodyRect.Height + m_oHeaderRect.Height + 2 - columnHeaderFontHeight - m_nLineSpace) / (bodyFontHeight + m_nLineSpace);
                }
                if (leftItems % printItemPerPage == 0)
                {
                    m_nPageCount = leftItems / printItemPerPage + 1;
                }
                else
                {
                    m_nPageCount = leftItems / printItemPerPage + 2;
                }
            }
            m_nTotalPage = m_nPageCount;


            /* 显示打印对话框 */
            PrintDialog pd = new PrintDialog();
            pd.Document = m_oPrintDoc;
            pd.PrinterSettings.MinimumPage = 1;
            pd.PrinterSettings.MaximumPage = m_nPageCount;
            pd.PrinterSettings.FromPage = 1;
            pd.PrinterSettings.ToPage = m_nPageCount;

            pd.AllowPrintToFile = false;      // 不设置打印到文件 
            if (m_nPageCount > 1)
            {
                pd.AllowSelection = true;
            }
            else
            {
                pd.AllowSelection = false;
            }
            pd.AllowSomePages = true;
            if (pd.ShowDialog() == DialogResult.OK)
            {
                m_nPageCount = pd.PrinterSettings.ToPage - pd.PrinterSettings.FromPage + 1;

                if (pd.PrinterSettings.FromPage > 1)
                {
                    m_nCurPrintItem = firstPageItem + (pd.PrinterSettings.FromPage - 2) * printItemPerPage;
                }
                else
                {
                    m_nCurPrintItem = 0;
                }
                m_nFromPage = pd.PrinterSettings.FromPage;
                m_oPrintDoc.DocumentName = m_nPageCount.ToString();
                m_oPrintDoc.PrinterSettings = pd.PrinterSettings;
                return true;
            }
            else
            {
                return false;
            }
        }


        /// <summary> 
        /// 启动 ListView 的打印工作 
        /// </summary> 
        public virtual void DoPrint()
        {
            if (this.Items.Count <= 0)
            {
                throw new Exception("没有需要打印的元素.");
            }
            InitPrintDocument();

            Margins margins = null;
            if (InitPrintPage(out margins) == false)
                return;

            if (InitPrintPageNumber(margins) == false)
                return;

            if (m_bIsPreview == false)
            {
                m_oPrintDoc.Print();
            }
            else
            {
                PrintPreviewDialog pd = new PrintPreviewDialog();
                pd.Document = m_oPrintDoc;
                pd.PrintPreviewControl.Zoom = 1.0;
                pd.WindowState = FormWindowState.Maximized;
                pd.ShowInTaskbar = true;
                pd.ShowDialog();
            }
        }


        /// <summary> 
        /// 打印页首 
        /// </summary> 
        /// <param name="g"></param> 
        protected virtual void PrintPageHeader(Graphics g)
        {
            RectangleF textRect = new RectangleF(m_oHeaderRect.X, m_oHeaderRect.Y, m_oHeaderRect.Width, m_oHeaderRect.Height - 3);
            CenterText(g, m_sPrintHeaderString, m_oHeaderFont, defaultBrush, textRect);
            g.DrawLine(defaultPen, m_oHeaderRect.X, m_oHeaderRect.Bottom - 2, m_oHeaderRect.Right, m_oHeaderRect.Bottom - 2);
        }

        /// <summary> 
        /// 打印正文 
        /// </summary> 
        /// <param name="g"></param> 
        protected virtual void PrintPageBody(Graphics g)
        {
            Rectangle textRect = m_oBodyRect;
            if (m_bIsAlwaysPrintHeader == false && m_nCurPrintPage != 1)
            {
                textRect = new Rectangle(m_oHeaderRect.X, m_oHeaderRect.Y, m_oHeaderRect.Width, m_oHeaderRect.Height + 2 + m_oBodyRect.Height);
            }

            /* 打印标题,也就是 columnHeader */
            int columnHeaderFontHeight = m_oColumnHeaderFont.Height;
            int bodyFontHeight = m_oBodyFont.Height;
            Rectangle columnHeaderRect = new Rectangle(textRect.X, textRect.Y, textRect.Width, columnHeaderFontHeight + m_nLineSpace);
            DrawColumnHeader(g, m_oColumnHeaderFont, defaultBrush, columnHeaderRect);

            /* 打印元素 */
            int itemHeight = bodyFontHeight + m_nLineSpace;
            Rectangle itemRect;
            int yPos = columnHeaderRect.Bottom;
            int printItemPerPage = (textRect.Height - columnHeaderRect.Height) / (bodyFontHeight + m_nLineSpace);

            for (int i = 0; (i < printItemPerPage) && (m_nCurPrintItem < this.Items.Count); i++)
            {
                itemRect = new Rectangle(textRect.X, yPos, textRect.Width, itemHeight);
                DrawItem(g, m_oBodyFont, defaultBrush, itemRect);
                m_nCurPrintItem++;
                yPos += itemHeight;
            }
            m_nCurPrintItem = 0; // added by Wooce
        }

        /// <summary> 
        /// 打印页尾 
        /// </summary> 
        /// <param name="g"></param> 
        protected virtual void PrintPageTail(Graphics g)
        {
            g.DrawLine(defaultPen, m_oTailRect.X, m_oTailRect.Top + 1, m_oTailRect.Right, m_oTailRect.Top + 1);

            RectangleF textRect = new RectangleF(m_oTailRect.X, m_oTailRect.Y + 3, m_oTailRect.Width, m_oTailRect.Height - 3);
            string text = "第 " + m_nFromPage.ToString() + " 页  共 " + m_nTotalPage.ToString() + " 页";
            m_nFromPage++;
            CenterText(g, text, m_oTailFont, defaultBrush, textRect);

            string time = "打印时间:" + DateTime.Now.ToLongDateString() + "   ";
            RightText(g, time, m_oTailFont, defaultBrush, textRect);
        }


        /// <summary> 
        /// 打印一页 
        /// </summary> 
        /// <param name="sender"></param> 
        /// <param name="e"></param> 
        private void PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.PageUnit = GraphicsUnit.Inch;
            e.Graphics.PageScale = .01f;

            if (m_bIsAlwaysPrintHeader == true)
            {
                PrintPageHeader(e.Graphics);
            }
            else
            {
                if (m_nCurPrintPage == 1)
                {
                    PrintPageHeader(e.Graphics);
                }
            }

            PrintPageBody(e.Graphics);
            PrintPageTail(e.Graphics);


            if (m_nCurPrintPage == m_nPageCount)
            {
                e.HasMorePages = false;
            }
            else
            {
                e.HasMorePages = true;
            }
            m_nCurPrintPage++;

        }


        /// <summary> 
        /// 打印前的初始化设置 
        /// </summary> 
        /// <param name="sender"></param> 
        /// <param name="e"></param> 
        private void BeginPrint(object sender, PrintEventArgs e)
        {
            m_nCurPrintPage = 1;
        }


        /// <summary> 
        /// 打印结束后的资源释放 
        /// </summary> 
        /// <param name="sender"></param> 
        /// <param name="e"></param> 
        private void EndPrint(object sender, PrintEventArgs e)
        {
        }


        /// <summary> 
        /// 居中显示文本信息 
        /// </summary> 
        private void CenterText(Graphics g, string t, Font f, Brush b, RectangleF rect)
        {
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;
            g.DrawString(t, f, b, rect, sf);
        }


        /// <summary> 
        /// 居右显示文本信息 
        /// </summary> 
        private void RightText(Graphics g, string t, Font f, Brush b, RectangleF rect)
        {
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Far;
            sf.LineAlignment = StringAlignment.Center;
            g.DrawString(t, f, b, rect, sf);
        }


        /// <summary> 
        /// 居左显示文本信息 
        /// </summary> 
        private void LeftText(Graphics g, string t, Font f, Brush b, RectangleF rect)
        {
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Center;
            g.DrawString(t, f, b, rect, sf);
        }

        /// <summary> 
        /// 打印 listview 的 columnheader 
        /// </summary> 
        private void DrawColumnHeader(Graphics g, Font f, Brush b, Rectangle rect)
        {
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Center;

            Rectangle itemRect;
            Point location = new Point(rect.Location.X, rect.Location.Y);
            Size itemSize;

            for (int i = 0; i < this.Columns.Count; i++)
            {
                itemSize = new Size(this.Columns[i].Width, rect.Height);
                itemRect = new Rectangle(location, itemSize);

                g.DrawRectangle(defaultPen, itemRect);
                g.DrawString(this.Columns[i].Text, f, b, itemRect, sf);

                location.X += this.Columns[i].Width;
            }
        }


        /// <summary> 
        /// 打印 listview 的 item 
        /// </summary> 
        private void DrawItem(Graphics g, Font f, Brush b, Rectangle rect)
        {
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Near;
            sf.LineAlignment = StringAlignment.Center;

            Rectangle itemRect;
            Point location = new Point(rect.Location.X, rect.Location.Y);
            Size itemSize;

            for (int i = 0; i < this.Columns.Count; i++)
            {
                itemSize = new Size(this.Columns[i].Width, rect.Height);
                itemRect = new Rectangle(location, itemSize);

                g.DrawRectangle(defaultPen, itemRect);
                g.DrawString(this.Items[m_nCurPrintItem].SubItems[i].Text, f, b, itemRect, sf);

                location.X += this.Columns[i].Width;
            }
        }
    }

就是        protected virtual void PrintPageBody(Graphics g)函数的末尾要补上:
            m_nCurPrintItem = 0; // added by Wooce
0
0
分享到:
评论
1 楼 huapyuan 2012-06-26  
我想在用ASP写的网页中加这个控件,可是它没有ID这个属性呀~~                PrintListView id="PrintListView" runat="server"></ccs:PrintListView>
我这样子写,可是会提示错误
Type 'ServerControls.PrintListView' does not have a public property named 'id'
可以帮忙看看这是什么问题吗?谢谢啦!!!

相关推荐

    打印功能的+listview+类

    此 `PrintListView` 类是对标准 `ListView` 类的一种扩展,旨在提供打印功能的支持。它允许用户自定义打印时的格式、字体样式以及其他与打印相关的设置。 #### 主要属性 1. **IsPreview (IsPreview)**: 一个布尔...

    C# ListView打印类

    根据给定文件的信息,本文将深入探讨如何在C#中创建一...这不仅涉及到了继承和重写ListView类的基础知识,还包括了对打印文档、页面布局以及其他相关属性的设置。这样的实现可以极大地提高应用程序的功能性和用户体验。

    ListView控件打印示例

    控件还支持分组、排序、选择和自定义项模板等功能,使其成为展示和管理数据的强大工具。 在Windows Forms中,我们通常使用System.Drawing.Printing命名空间下的PrintDocument类来处理打印任务。PrintDocument提供了...

    VB如何打印出ListView报表中的内容举例.rar

    VB如何打印出ListView报表中的内容举例,进行ListView报表的打印输出,这在平时的使用中,是个常用功能,因此对于VB编程者来说,这是个实用的值得掌握的ListView编程技巧,通过这个VB源码,主要是演示如何将ListView...

    VB打印ListView控件中的内容

    4. **绘制ListView内容**:由于ListView控件本身不支持直接打印,我们需要手动使用Graphics对象(来自Printer对象)来绘制列表视图的内容。例如,我们可以使用Graphics.DrawString方法绘制每一项和子项的文本。 5. ...

    C# ListView打印

    在.NET框架中,`ListView`控件是一种常用的用户界面元素,用于显示数据集中的列表项。...通过理解并应用上述步骤,开发者能够创建一个功能完备的所见即所得的`ListView`打印解决方案,满足用户在实际应用中的需求。

    ListView打印预览功能实例VB源程序

    这个“ListView打印预览功能实例VB源程序”很可能是为了帮助开发者实现将ListView中的数据转换为可打印的预览格式。下面将详细阐述ListView控件的基本特性和如何在VB中实现打印预览功能。 1. **ListView控件介绍** ...

    单文档ListView类型的打印 VC

    本篇将详细讲解如何在VC++的单文档应用中实现ListView类型的打印功能。 首先,我们需要理解ListView的基本操作。ListView控件可以通过MFC(Microsoft Foundation Classes)库中的CListCtrl类进行封装。在CListCtrl...

    listview编程实例

    在提供的文件列表中,"VB打印控件Listview使用示例"可能是一个实际的VB.NET代码示例,用于展示如何使用ListView控件并实现打印功能。文件名中的"VIP会员"、"会员服务"和"查看帮助"可能暗示这个例子是关于会员管理...

    ListViewDemo(超级靓的控件源码,几乎所有功能都有了)

    `ObjectListView.cs`可能是这个项目的核心组件,它可能是一个自定义的ListView类,扩展了.NET Framework自带的ListView控件的功能。自定义控件通常会添加额外的属性、方法或事件,以满足特定需求,比如性能优化、...

    listview打印事例

    至于打印功能,Android本身并不支持直接打印ListView。但是,我们可以借助第三方库如`android-print`或`android.print`框架来实现。首先,你需要在清单文件中添加打印权限: ```xml ``` 然后,实现一个打印接口...

    VB打印控件Listview使用示例

    在提供的示例中,源码应该包含了设置ListView控件、填充数据以及调用打印功能的代码。主要涉及的函数可能包括:Form_Load事件(初始化界面)、ListView_ItemSelectionChanged事件(处理用户选择变化)和一个自定义的...

    网格报表,可以轻松实现VC的打印报表

    此外,它们还可能支持打印预览功能,允许用户在正式打印前检查报表的外观。 总的来说,通过使用特定的网格报表控件并结合打印控件,开发者可以在VC项目中实现高效且灵活的报表打印功能。这不仅可以提高开发效率,还...

    免费DataGridView打印及.NET轻松打印控件6.01版(VB打印,C#打印,图表打印,Excel导入导出,多表头显示与打印)

    13、多表头(跨行跨列的复杂表头)打印功能,多表头组件支持多表头显示与打印、单元格内容的合并显示、打印与导出。 14、自定义纸张支持功能。 15、直接打印窗口中的TreeView控件功能。 16、打印窗口中的ListView...

    免费DataGridView打印及.NET轻松打印控件5.6版(VB打印,C#打印)

    16、多表头(跨行跨列的复杂表头)打印功能,多表头组件支持多表头显示与打印、单元格内容的合并显示、打印与导出。 17、自定义纸张支持功能。 18、纸张背景图片设置打印功能。 19、.NET4.0支持功能(是单独的一个...

    VB表格打印源代码,有打印设置及预览功能.rar

    总之,这个VB源代码包提供了从ListView、FlexGrid等表格控件到打印设置和预览的完整解决方案,对于学习和实践VB的表格打印功能具有很高的参考价值。开发者可以通过分析和修改这些代码,以适应自己的项目需求。

    C/S打印功能

    在本例中,我们关注的是C/S架构中的打印功能,特别是如何在WPF(Windows Presentation Foundation)界面上设计打印样式,并通过C#后端代码来实现数据列表的打印。WPF是.NET Framework的一部分,提供了丰富的用户界面...

    免费DataGridView打印及.NET轻松打印控件5.0版

    1、强大的DataGridView打印功能,不仅可以以多种形式(普通打印、分栏打印、跨页打印、工资条打印)打印DataGridView表格,基本上能完全按DataGridView控件本身设置的格式如字体、字号、背景颜色、前景颜色、单元格...

    VB编写ListView报表打印模块及测试程序

    内容索引:VB源码,报表打印,VB打印,Listview vb编程实现LISTVIEW报表的打印功能,完成页面预览、打印内容等比例缩放、自定义页码打英支持设置纸张大孝纸张类型、纸匣数量,还可以设置页面、表格和字体、标题、页眉、...

    免费DataGridView打印及.NET轻松打印控件5.5版(VB打印,C#打印)

    16、多表头(跨行跨列的复杂表头)打印功能,多表头组件支持多表头显示与打印、单元格内容的合并显示、打印与导出。 17、自定义纸张支持功能。 18、纸张背景图片设置打印功能。 19、.NET4.0支持功能(是单独的一个...

Global site tag (gtag.js) - Google Analytics