Windows 客户端(而非 Web 应用程序)打印的最佳方式?

2024-03-28

从 c#/.net 打印内容的最佳方法是什么?

问题涉及单页以及包含大量页面的报告。

如果能获得最常见的打印库的列表,其中包含每个库的主要功能和陷阱,那就太好了。

[更新] 适用于标准 Windows 客户端(或服务器),不适用于网络应用程序。


对于报告,我使用 RDLC 控件。

对于其他一切,我使用 .NET 中固有的打印对象。

Edit固有的打印对象都可以在 System.Drawing.Printing 命名空间中找到。当您在 WinForms(或 WPF)应用程序中使用 PrintDialog 或 PrintPreviewDialog 时,您将控制权移交给这些对象。

基本概念是您正在打印机上绘图。最简单的形式是:

Sub MyMethod()
     Dim x as New PrintDocument
     AddHandler x.PrintPage, AddressOf printDoc_PrintPage
     x.Print
End Sub
Sub printDoc_PrintPage( sender as Object,  e as PrintPageEventArgs)
      Dim textToPrint as String= ".NET Printing is easy"
      dim printFont as new Font("Courier New", 12)
      dim leftMargin as int= e.MarginBounds.Left
      dim topMargin as int = e.MarginBounds.Top
      e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, leftMargin, topMargin)
End Sub

这里发生的情况是,当我的对象 (x) 收到打印命令时,它会引发“打印页”事件(设计为一次打印一页)。然后,该事件使用 PrintPageEventArgs 的 Graphics 属性将相关字符串直接绘制到打印后台处理程序。

这是一个教程 http://www.ondotnet.com/pub/a/dotnet/2002/06/24/printing.html,并且在 Google 上快速搜索“.NET 打印教程”会返回超过 20 万条结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 客户端(而非 Web 应用程序)打印的最佳方式? 的相关文章

  • strtok() 使用安全吗[重复]

    这个问题在这里已经有答案了 我读到了很多负面的东西strtok 有人说它已经过时 有人说它不是线程安全的 等等 那么真相是什么 我可以使用吗strtok 它是线程安全的吗 Note 我正在使用 Visual C 您可以使用它 它是标准库的一
  • 如何通过覆盖 MSBuild 目标来防止外语资源生成?

    我正在致力于减少大型 C ASP NET 解决方案的编译时间 我们的解决方案使用通常的 resx 文件方法翻译成大约十几种外语 这些资源文件的解析和编译极大地减慢了我们的编译时间 并且是日常的挫败感 我知道可以创建自定义资源提供程序并摆脱
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 如何在VB.NET中画一条线

    我正在尝试用 VB NET 画一条简单的线 我的代码如下 但是当我运行代码时 只显示表单 没有线 我在这里做错了什么 Public Class Form1 Dim pen As System Drawing Graphics Private
  • 在VB.NET中获取文件修改日期

    我的文件夹中有许多文件 我需要获取最后修改日期 所以我用了 FDate IO File GetLastWriteTime FName 对于某些文件 它工作正常 但对于其他文件 我得到的日期为 1 1 1601 但是当我在 Windows 资
  • 选择initializer_list迭代器定义

    Why std initializer list
  • 从内存流播放视频文件

    只是好奇看看这是否可能 我有一个 Windows 应用程序 它从我的电脑上的 avi 文件读取所有字节 然后将其存储在 byte 中 现在我的内存中有 avi 文件 我想直接从内存将其加载到某种视频播放器控件中 我尝试过使用 wmplaye
  • 原子存储抛出错误

    我最近升级到了 C 11 兼容编译器 并且尝试将一些代码从 boost 更新到 c 11 标准 我在使用atomic store转换一些代码时遇到了问题 这是一些简单的测试代码 似乎会引发编译器错误 int main std shared
  • 如何在 C++ 运行时更改 QML 对象的属性?

    我想在运行时更改 QML 对象的文本 我尝试如下 但文本仍然为空 这是后端类 class BackEnd public QObject Q OBJECT Q PROPERTY QString userFieldText READ userF
  • 查找方法不适用于 EF6.1 模拟

    我已经使用这些 msdn 指南设置了模拟 使用模拟框架进行测试 EF6 及以上 http msdn microsoft com en us data dn314429 var bsAc db BusAcnts FirstOrDefault
  • Control.Invoke 是否泵送消息?

    Control Invoke 在被阻塞时是否继续在调用它的线程中泵送消息 系统 Windows 窗体 不会 Invoke 是阻塞的 整个线程将阻塞 直到对 Invoke 的调用返回 还有开始调用 http msdn microsoft co
  • 冒号在c中起什么作用?

    我在课堂上得到了这个例子 但我不确定它的作用 我知道冒号添加了一个位字段 但我仍然不确定这个问题 a b gt 0 3 1 运算符称为条件运算符 If b值为 gt 0 价值3被分配给a否则值1被分配给a 以 Kernighan Ritch
  • 调试错误:在 vc++ 项目中使用 COM 时发生 所需的运行时?

    我为我的工作创建了一个 COM 组件 我也注册了该组件 在我的系统上 我有两个虚拟机工作站 在我的第一个工作站中 它运行良好 在我的第二个工作站中 它显示一个包含消息的错误框该程序需要一段时间并以不寻常的方式关闭 请联系应用程序管理员 我认
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和

随机推荐

  • 如何绕过 .NET 中未处理的异常处理来克服 StackOverflowException

    在遇到 NET 中的一些 StackOverflowExceptions 后 我注意到它们完全绕过了 NET 提供的未处理的异常处理程序 Application ThreadException AppDomain UnhandledExce
  • JavaScript - 修复计算器的 da*n 插入符号

    我正在用 javascript 制作一个计算器 到目前为止它的计算结果是 sin cos tan cot sec csc并且arc and hyberbolic所有亚型中 sqrt cbrt y th root and pow 问题是我不想
  • 检索早于提要中包含的 RSS 帖子

    创建 RSS 阅读器时 您可以下载 RSS 提要链接指向的 XML 格式文档 并且可以手动解析它或使用 SyndicateFeed 命名空间中的功能 因此 如果我们以 Scott Guthrie 的博客为例 您下载 RSS feed 文档h
  • 将 Highcharts 最大 Y 值设置为精确值而不进行四舍五入

    每次我在 Highcharts 中设置最小值和最大值时 我都不会得到具有我发送的精确最小值和最大值的图表 但总是有些接近的值 似乎 Highcharts 正在为轴选择一个间隔范围 如果我的最大值不符合正确的间隔 它就会被忽略或四舍五入 例如
  • 防止 VS Code IntelliSense 在函数名称后插入 ={}

    自上次 Visual Studio Code 更新以来 我在 IntelliSense 自动完成方面遇到了问题 一般来说 如果我想将函数设置为 prop 这是此问题最常见的用例 那么 VS Code 不只是插入函数名称 而是添加 括号 那么
  • 如何在没有 jQuery 的情况下模拟 ajaxStart 和 ajaxStop?

    我一直在查看 jQuery 代码 但它有点庞大 这是一件容易的事吗 知道怎么做吗 我想要这样做的原因是因为我不想将它用于网页 而是用于 C 应用程序 该应用程序需要知道何时有 ajax 活动在网页浏览器 http msdn microsof
  • 如何使用php使用多个数据库?

    我在互联网上阅读了多个问题 包括这个堆栈溢出问题 https stackoverflow com questions 274892 how do you connect to multiple mysql databases on a si
  • D3.js - 如何添加具有默认滚轮鼠标缩放行为的缩放按钮

    因此 我使用默认的 d3 behavior zoom 获得了带有鼠标缩放的世界地图 并进行了限制以防止地图被完全拖出页面 开始工作时很痛苦 但现在可以了 我现在的问题是 这个项目还需要界面中无用的缩放 和 按钮 并且我找不到具有两种缩放类型
  • 使用 JQuery 进行本地化?

    我不知道如何使用 JQuery 处理本地化 我想设置一个innerHTML使用德语文本 但如果浏览器配置为使用英语 那么我想设置英语文本 在 PHP 中 我使用 gettext 来完成此类操作 但是如何在 JavaScript jQuery
  • Automapper:检查 MapFrom 中的 null

    使用版本 4 制作地图时如何检查 null 我尝试过 Value 但那不存在于Null Mapper CreateMap
  • 我应该如何在 Java 中为 Android 手机实现准确的音高检测?

    我想开发一个应用程序 需要通过 Android 手机的麦克风对乐器进行精确的音高检测 我读到的大多数建议都涉及使用快速傅里叶变换 FFT 但他们提到它在准确性和处理能力方面存在问题 考虑到它应该在智能手机上顺利运行 一个答案建议误差幅度为
  • net-snmp解析代码,如何解析MIB?

    我在学习代码库 解析MIB In parse c and parse h代码保留一个哈希桶 indexed bucket tree list 还有一个树结构 其中包含一个指向的next指针Next node in hashed list o
  • a*b* 是正则吗?

    I know anbn for n gt 0 is not regular by the pumping lemma but I would imagine a b to be regular since both a b don t ha
  • .NET Framework 上的 System.Numerics.Vector 初始化性能

    System Numerics Vector 为 NET Core 和 NET Framework 带来了 SIMD 支持 它适用于 NET Framework 4 6 和 NET Core Baseline public void Sim
  • Google Apps 脚本是否支持外部 IDE?

    我正在使用 Google Apps 脚本 想知道是否可以使用 Google 提供的编辑器之外的任何类型的编辑器 我购买了 Sublime Text 并且想使用它 Google 提供的那个很恶心 文本很小 尽管我有一个巨大的屏幕和语法颜色 我
  • Android 单选按钮

    我在 Android 中有一个单选按钮组 看起来像 选择颜色 Red Blue Orange Green 我需要选择单选按钮及其值 我在 radiogroup 中以这种方式有 4 个单选按钮rg rb1a RadioButton findV
  • Chrome CLI 的参数 --virtual-time-budget 的真正含义是什么?

    我知道该论点的文档 virtual time budget 在源中 https cs chromium org chromium src headless app headless shell switches ccChromium 但我觉
  • Zend Framework 3 中的 GetServiceLocator

    早上好 我一直在学习使用框架 Zend Framework 进行编程 根据我过去的经验 我使用的是骨架应用程序 v 2 5 也就是说 我过去开发的所有模块都围绕 ServiceManager 的 servicelocator 工作 有没有办
  • 如何在Android中的WebView中永久突出显示文本?

    我正在为 Android 手机开发 ePUB 阅读器 我可以使用 WebView 和 ClipBoardManager 将文本复制到 ClipBoard 但我真正想做的是永久突出显示该选择 我看到一些文章 他们建议让 WebView 处于选
  • Windows 客户端(而非 Web 应用程序)打印的最佳方式?

    从 c net 打印内容的最佳方法是什么 问题涉及单页以及包含大量页面的报告 如果能获得最常见的打印库的列表 其中包含每个库的主要功能和陷阱 那就太好了 更新 适用于标准 Windows 客户端 或服务器 不适用于网络应用程序 对于报告 我