国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

打印Winform控件實現(xiàn)簡陋版的分頁打印(C#)

這篇具有很好參考價值的文章主要介紹了打印Winform控件實現(xiàn)簡陋版的分頁打印(C#)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文的代碼可以從這里獲?。簑informDemo.rar · 張祥裕/分享的資源名稱 - Gitee.com

作者的水平有限,如有錯誤,望指正。

為了簡單起見,紙張大小,打印機等信息按照默認的來,本文的實現(xiàn)方案是:打印Panel中的控件信息,循環(huán)進行打印,打印完一張,把信息重新填充到對應的控件上再繼續(xù)打印。

這個地址winforms - Print the entire area of the control with C# - Stack Overflow鏈接提到了這么一句:

打印Winform控件實現(xiàn)簡陋版的分頁打印(C#),C#編程,c#,winfrom,分頁打印,打印控件

?說是要把控件里的內(nèi)容重新賦值給另外一個控件myControlToDisplay,大概看了一下提供的代碼,感覺代碼不全,就沒有照著來試了

還有這里的鏈接:

Printing Multiple Pages of a Text File in Windows Forms | DotNetCurry

讀取txt記事本里面的內(nèi)容,并分頁打印,提供的代碼

打印Winform控件實現(xiàn)簡陋版的分頁打印(C#),C#編程,c#,winfrom,分頁打印,打印控件

提到了一個HasMorePages屬性,設置它應該可以實現(xiàn)連續(xù)打印,結合這兩個鏈接提供的方案,這讓我想到了另外一種方案:把要打印的內(nèi)容全部渲染到一個容器控件上,根據(jù)紙張的大小,計算并截取要打印的內(nèi)容,類似效果如下:

打印Winform控件實現(xiàn)簡陋版的分頁打印(C#),C#編程,c#,winfrom,分頁打印,打印控件

?從上往下,就像疊羅漢一樣,直到截取并打印完畢,這只是個人的想法,還沒驗證。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-620385.html

好了,本文的內(nèi)容正式開始

步驟如下:

1? 新建Winform程序,名為winfromDemo

UI布局及控件的名稱如下:

打印Winform控件實現(xiàn)簡陋版的分頁打印(C#),C#編程,c#,winfrom,分頁打印,打印控件

2? 新增類,名為:Student,代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace winformDemo
{
    public class Student
    {
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { set; get; }
        /// <summary>
        /// 年齡
        /// </summary>
        public string Age { set; get; }
    }
}

3? 打印邏輯代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace winformDemo
{
    public partial class Form1 : Form
    {
        PrintPreviewDialog printDialog = new PrintPreviewDialog();
        PrintDocument printDocument = new PrintDocument();
        public Form1()
        {
            InitializeComponent();
            InitPrintInfo();
            this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click);
        }
        /// <summary>
        /// 初始化打印信息
        /// </summary>
        private void InitPrintInfo()
        {
            printDialog.Document = printDocument;
            printDocument.PrintPage += PrintDocument_PrintPage;
        }
        

        /// <summary>
        /// 打印邏輯
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPrint_Click(object sender, EventArgs e)
        {
            List<Student> studentPrintList = new List<Student>();
            studentPrintList.Add(new Student() {  Name="張三", Age="29"});
            studentPrintList.Add(new Student() { Name = "李四", Age = "28" });
            int currentPageNumber = 0;
            //遍歷循環(huán)打印
            foreach (var item in studentPrintList)
            {
                currentPageNumber++;
                //設置頁碼信息
                SetPageInfo(currentPageNumber, studentPrintList.Count);
                this.txtName.Text = item.Name;
                this.txtSex.Text = item.Age;
                printDialog.ShowDialog();
            }
        }
        /// <summary>
        /// 調(diào)用printDialog.ShowDialog()方法就會自動調(diào)該方法進行打印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
        {
            PrintStudentInfo(e.Graphics, this.printArea);
        }
        /// <summary>
        /// 打印控件
        /// </summary>
        /// <param name="graphics"></param>
        /// <param name="printControl"></param>
        public void PrintStudentInfo(Graphics graphics,Control printControl)
        {
            Bitmap bitmap = new Bitmap(printControl.Width, printControl.Height);
            printControl.DrawToBitmap(bitmap, new Rectangle(0,0, bitmap.Width, bitmap.Height));
            Rectangle target = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
            graphics.PageUnit = GraphicsUnit.Display;
            graphics.DrawImage(bitmap, target);
        }
        /// <summary>
        /// 設置頁碼信息
        /// </summary>
        /// <param name="currentPageNumber"></param>
        /// <param name="totalPageNumber"></param>
        private void SetPageInfo(int currentPageNumber,int totalPageNumber)
        {
            this.lblPageInfo.Text =string.Format("第{0}頁/總{1}頁",currentPageNumber,totalPageNumber);
        }
    }
}

代碼太簡單了,就不解釋了

4? 點擊打印按鈕,運行效果如下:

打印Winform控件實現(xiàn)簡陋版的分頁打印(C#),C#編程,c#,winfrom,分頁打印,打印控件

?關掉預覽框后,會接著彈出打印第二頁的預覽框,如下圖:

打印Winform控件實現(xiàn)簡陋版的分頁打印(C#),C#編程,c#,winfrom,分頁打印,打印控件

?

好了,本水文到此結束。如有疑問,可以通過郵箱聯(lián)系:2847225301@qq.com

?

到了這里,關于打印Winform控件實現(xiàn)簡陋版的分頁打印(C#)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot ElasticSearch 實現(xiàn)訂單的分頁查詢 【SpringBoot系列17】

    SpringBoot ElasticSearch 實現(xiàn)訂單的分頁查詢 【SpringBoot系列17】

    SpringCloud 大型系列課程正在制作中,歡迎大家關注與提意見。 程序員每天的CV 與 板磚,也要知其所以然,本系列課程可以幫助初學者學習 SpringBooot 項目開發(fā) 與 SpringCloud 微服務系列項目開發(fā) elasticsearch是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海

    2024年02月09日
    瀏覽(18)
  • 【分頁表格】Vue2 + Element UI實現(xiàn)自定義的分頁表格組件(自定義Vue組件)

    這篇文章,主要介紹Vue2 + Element UI實現(xiàn)自定義的分頁表格組件(自定義Vue組件)。 目錄 一、分頁表格 1.1、運行效果 1.2、運行環(huán)境 1.3、案例代碼

    2024年02月11日
    瀏覽(52)
  • MyBatis的分頁原理

    MyBatis的分頁原理

    最近看到了一篇MyBatis的分頁實現(xiàn)原理,文章里描述到使用ThreadLocal,其實想主要想看看ThreadLocal的巧妙使用,并且看一下分頁是如何實現(xiàn)的。 ChaiRongD/Demooo - Gitee.com 其實一個簡單的分頁如下面代碼所示,使用PageHelp對象設置分頁的參數(shù),然后把查詢到的List對象作為參數(shù)傳入P

    2024年02月09日
    瀏覽(17)
  • Mybatis中的分頁插件

    目錄 一.為什么要使用分頁插件? 二.分頁常用標簽 三.分頁插件的使用 ????????1.在mybatis的pom中添加分頁插件依賴 ????????2.在mybatis-config.xml中創(chuàng)建分頁插件 3.在test文件中進行查詢操作的時候,開啟分頁功能 ?????? PageInfo() ????????PageHelper.startPage(); 總結: 不必

    2023年04月13日
    瀏覽(21)
  • Elasticsearch - 閑聊ElasticSearch中的分頁

    Elasticsearch - 閑聊ElasticSearch中的分頁

    ElasticSearch是一款強大的搜索引擎,它能夠幫助我們快速地搜索海量數(shù)據(jù)。然而,在處理大量數(shù)據(jù)時,ElasticSearch的性能可能會受到影響。其中一個常見的問題是深度分頁,也就是當我們需要獲取大量數(shù)據(jù)時,ElasticSearch需要處理的數(shù)據(jù)量太大,導致性能下降。 Elasticsearch 深度分

    2024年02月11日
    瀏覽(22)
  • 【定時任務處理中的分頁問題】

    最近要做一個定時任務處理的需求,在分頁處理上。發(fā)現(xiàn)了大家容易遇到的一些\\\"坑\\\",特此分析記錄一下。 場景 現(xiàn)在想象一下這個場景,你有一個定時處理任務,需要查詢數(shù)據(jù)庫任務表中的所有待處理任務,然后進行處理。 舉個例子:生成用戶的月度賬單,并且要盡可能確

    2024年02月12日
    瀏覽(38)
  • MyBatisPlus(SpringBoot版)的分頁插件

    MyBatisPlus(SpringBoot版)的分頁插件

    目錄 ?一、前置工作: ? ? ? ? 1.整體項目目錄結構 ? ? ? ? 2.創(chuàng)建普通javamaven項目。 ? ? ? ??3.導入依賴,改造成springboot項目 ????????4.配置啟動類 ????????5.創(chuàng)建service接口及其實現(xiàn)類 ? ? ? ?6.創(chuàng)建接口Mapper ???????? ????????7.配置數(shù)據(jù)源 ?? ? ? ?8.創(chuàng)建數(shù)

    2024年04月27日
    瀏覽(33)
  • c# winform實現(xiàn)控件類型、數(shù)量的動態(tài)更新

    c# winform實現(xiàn)控件類型、數(shù)量的動態(tài)更新

    在系統(tǒng)開發(fā)的過程中,往往會遇到需要動態(tài)的控制控件內(nèi)部顯示的控件數(shù)量、控件類型的情況,比如這樣的。 1、問題描述:如何自定義的控制控件中數(shù)據(jù)顯示的類型呢? 首先面對這個問題,我們得先了解winform的控制工具中有哪些控件是可以用來承載其他控件工具的,例如以

    2024年02月16日
    瀏覽(20)
  • vue使用printJs實現(xiàn)前端打印,以及打印分頁實現(xiàn)

    vue使用printJs實現(xiàn)前端打印,以及打印分頁實現(xiàn)

    在web端可以直接使用原生調(diào)用方法調(diào)用打印,但是往往需要單獨把需要打印的東西拎出來畫一個單獨的html,而使用printJs則可選中你需要打印的代碼塊,進行頁面局部打印 我的需求為將表格打印出來,并且超過分頁數(shù)進行分頁展示 以下內(nèi)容參考了其他博主的實現(xiàn)方法,僅供參考 1.可

    2024年02月03日
    瀏覽(23)
  • C# winform usercontrol控件跟隨主窗體實現(xiàn)自動大小

    C# winform usercontrol控件跟隨主窗體實現(xiàn)自動大小

    usercontrol控件跟隨主窗體實現(xiàn)自動大小 今天是跟著嘩哩嘩哩大學學習C的第N天,但是是學習usercontrol的第一天。 第一天遇到的問題就是如何將usercontrol的大小跟隨主窗體的一起變大變小。視頻中教得很詳細,首先是將usercontrol控件實例化,接著就是設置usercontrol的dock屬性為fil

    2024年02月12日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包