首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#PrintDocument已更改事件

C# PrintDocument 已更改事件:全面解析

PrintDocument 类是 .NET Framework 中的一个类,用于在基于 Windows 的应用程序中打印文档。在 C# 中,这个类已被更改并扩展为支持更多功能,如自定义属性、事件和更多方法。下面是关于 C# PrintDocument 已更改事件的详细解析:

1. PrintDocument 类

在 C# 的早期版本中,PrintDocument 类用于在应用程序中打印文档。这个类提供了基本的打印功能,包括设置页面大小、方向、纸张、打印标题等。

代码语言:csharp
复制
using System.Drawing.Printing;

class PrintDocument : System.Windows.Forms.Document
{
    // 构造函数
    public PrintDocument()
    {
        // 初始化打印机
        if (PrinterSettings.InstalledPrinters.Count == 0)
        {
            throw new Exception("No printers are installed.");
        }

        // 获取第一个打印机
        m_PrinterSettings = new PrinterSettings();
        m_PrinterSettings.PrinterName = PrinterSettings.InstalledPrinters[0];
    }

    // 打印方法
    protected override void OnPrint(PrintEventArgs e)
    {
        // 打印当前文档
        base.OnPrint(e);

        // 打印预览
        if (m_PrintPreview == null)
        {
            m_PrintPreview = new PrintPreviewDialog();
            m_PrintPreview.Document = this;
            m_PrintPreview.ShowDialog();
            m_PrintPreview.Dispose();
        }
        else
        {
            m_PrintPreview.Print();
        }
    }

    // 页面设置
    public override PrinterSettings PrinterSettings
    {
        get
        {
            return m_PrinterSettings;
        }
        set
        {
            m_PrinterSettings = value;
        }
    }

    // 自定义属性
    public string Title
    {
        get { return this.Text; }
        set { this.Text = value; }
    }

    public string DocumentName
    {
        get { return m_PrinterSettings.PrinterName; }
        set { m_PrinterSettings.PrinterName = value; }
    }

    public int NumberOfCopies
    {
        get { return m_PrinterSettings.Copies; }
        set { m_PrinterSettings.Copies = value; }
    }

    public string Paper
    {
        get { return m_PrinterSettings.PaperName; }
        set { m_PrinterSettings.PaperName = value; }
    }

    public int PageOrientation
    {
        get { return m_PrinterSettings.PageOrientation; }
        set { m_PrinterSettings.PageOrientation = value; }
    }

    public int Scale
    {
        get { return m_PrinterSettings.Scale; }
        set { m_PrinterSettings.Scale = value; }
    }

    // 打印机设置
    private PrinterSettings m_PrinterSettings = new PrinterSettings();
    private PrintPreviewDialog m_PrintPreview;
}

2. C# PrintDocument 已更改事件

C# PrintDocument 类在 PrintDocument.PrintController 属性中引入了新的 PrintController 类别,该属性提供了一个用于控制文档打印的新接口。

代码语言:csharp
复制
using System.Drawing.Printing;

// ...

// 创建一个 PrintController 对象
PrintController printController = new PrintController();

// 将 PrintDocument 对象传递给 PrintController 以进行打印
printController.PrintDocument(doc, "My Document");

PrintController 类提供了一些新方法,用于控制文档的打印过程。例如,PrintController.Print() 方法用于打印指定的文档,PrintController.BeginPrint() 方法用于开始打印过程,PrintController.EndPrint() 方法用于结束打印过程。

此外,PrintController 类还提供了一些属性,用于获取文档的打印状态和打印选项。例如,PrintController.JobProperties 属性用于获取文档的打印作业属性,PrintController.PrinterSettings 属性用于获取文档的打印机设置。

总之,C# PrintDocument 类已经进行了修改,现在可以通过 PrintController 对象来控制文档的打印过程。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Qt状态更改事件

介绍QEvent::changeEvent事件。   可以重新实现此事件(changeEvent)以处理状态更改。...) QEvent::EnabledChange (窗口的启用状态更改) QEvent::FontChange (窗口的字体已更改) QEvent::StyleChange (窗口的样式更改) QEvent...::PaletteChange (窗口的调色板更改) QEvent::WindowTitleChange (窗口的标题更改) QEvent::IconTextChange (窗口的图标文本已更改(不赞成使用...窗口的父类更改) QEvent::WindowStateChange (窗口的状态"最小化、最大化或全屏"更改) QEvent::LanguageChange (应用程序翻译更改) QEvent:...:LocaleChange (系统区域设置更改) QEvent::LayoutDirectionChange (默认应用程序布局方向更改) QEvent::ReadOnlyChange (窗口的只读模式更改

97810

神奇的traitlets(赋予PY类属性修改后,自动更改事件

观察者模式,属性修改后,用自己的函数更改事件 如果前面的用法是毛毛雨的话,那这个就是瓢泼大雨了。在开始bb之前,我们说下什么是观察者模式。我不太喜欢书中的定义,太装A++(自己思考)。...'running') # 监视类变量的改动,监视了running这个值 def _on_running(self, change): # change是我们在捕获到改动事件后做出的反应...the notification, usually 'change' } { “所有者”:对象,#HasTraits实例 “new”:1,#新值 “old”:0,#旧值 “name”:“bar”,#更改特征的名称...'type':'change',#通知的事件类型,通常为'change' } 继续说,还有一个功能就是让一个属性在一个范围内变化 交叉验证器这个名字要记住哦~ 如果对某个属性有取值范围的限定,或者其他要求

1.3K30

WPF继续响应被标记为处理事件的方法

WPF中在冒泡事件或者隧道事件会随其层间关系在visual tree上层层传递,但是,某些事件传递到某些控件是即会”终止“(不再响应相应的注册事件),给人一种事件终结者的印象。...例如:textbox对mousdown事件。 产生原因:事件处理到达该控件后,其事件对象属性Handled被标记为True。...WPF事件引擎在处理控件对应事件时,若检测到该属性为True,就不会调用相应的处理程序。...visual tree上传递过程中,某个元素将该事件标记为处理,导致事件在传递时不再继续有响应,(原因:Handled被标记为True)如果希望后续元素也能响应此方法,可以使用此方法。...但是元素处理后其上层元素也照样不会相应,因为handle仍被标记处理。

92510

携程通报亲子园事件进展:园长被刑拘 两副总裁停职

新浪科技讯 11月14日下午消息,携程今日发布亲子园事件内部通报,园方主要责任人郑某被警方刑拘,携程前人力资源副总裁施琦和现任人力资源副总裁冯卫华停职接受调查。   ...日前,携程亲子园职工虐童事件引发巡舆论关注,携程CEO孙洁发布内部信亲自出面道歉,承认携程存在监管不力以及对外通报信息不及时的问题。   ...今日,携程内部发布事件通报称,11月13日园方主要责任人郑某已经被警方刑拘。同时携程也启动对此事件相关责任人的内审调查。目前,施琦(前人力资源副总裁)、冯卫华(现任人力资源副总裁)停职接受调查。...3.同时启动对此事件相关责任人的内审调查。目前,施琦(前人力资源副总裁)、冯卫华(现任人力资源副总裁)停职接受调查。庄宇翔担任HR临时负责人。

47150

SIGIR主席公开信回应抄袭事件:正调查但无法撤稿,联系Reddit锁帖

他代表SIGIR发了一封公开信回应该事件,表示正在调查,对公开匿名指控不予回应,并号召大家不要参与Reddit上的公开讨论。...最近,SIGIR主席Ben Carterette代表SIGIR发了一封公开信回应该事件。 我们先来回顾一下事情的来龙去脉。...ACM 有明确的规定和程序来报告和判定可能的剽窃事件。众所周知,这是一项非常严重的指控,最好由具有经验和专业知识的中立第三方来裁决。如果您要提出正式投诉,可以。”...,以发现违规情况,包括使用iThenticate查重工具将提交的内容与发表的论文进行比较。...事件正在调查,论文无法撤稿,联系Reddit锁帖 我们现在在做什么? 我们现在并没闲着。本着上文中的精神,我们做出大部分的答复是私下进行的。 重新进行发布前检查。

62010

BUF大事件丨黑客开始针对M1芯片,全球3万余台Mac电脑感染恶意软件

本周BUF大事件还是为大家带来了新鲜有趣的安全新闻,全球3万余台Mac电脑感染恶意软件,黑客开始针对M1芯片;CD Projekt遭网络攻击,赛博朋克2077补丁延迟发布;红杉资本遭遇黑客攻击,投资者个人和财务信息恐被窃取...想要了解详情,来看本周的BUF大事件吧!...全球3万余台Mac电脑感染恶意软件 去年,苹果推出了首款用于Mac的自研电脑芯片M1,这促使许多开发人员编写专门用于新型M1芯片的应用程序,而黑客也纷纷效仿。...红杉资本遭遇黑客攻击,投资者个人和财务信息恐被窃取 上周五,美国风险投资公司红杉资本对投资者表示,公司最近经历了一起网络安全事件,公司的一些个人信息和财务信息可能已被第三方窃取。...Clubhouse官方回应称已经“永久封禁”该用户,并安装了新的“保障措施”以阻止类似事件发生。 ?

50210

PyTorch发布一周年:盘点社区和工程大事件,后来者居上态势显?

刚刚,PyTorch团队在官网上发文,盘点了PyTorch上一年的进展、大事件和社区情况,并和其他框架进行了对比。...arXiv每月平均提到PyTorch 72次,TensorFlow 273次,Keras 100次,Caffe 94次,Theano 53次 这些对比数据之外,PyTorch团队还整理了这一年社区的大事件和突破性进展...社区大事件 第一个现身社区的PyTorch程序包来自CMU博士Brandon Amos,他帮助简化了矩阵块的操作。...工程大事件 在过去一年,PyTorch团队实现了多个功能,提高了性能。我们一起回顾一下: 高阶梯度 去年8月,PyTorch实现了一个可以接收n阶导数的通用接口,并增加了支持高阶梯度函数的范围。

866100
领券